The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Changes 078
LICENSE 11
MANIFEST 1511
META.json 549634
META.yml 490549
Makefile.PL 15
README.md 12
author/convert-to-test-fatal 1280
author/docGenerator.pl 10
author/extract-inline-tests 45
benchmarks/caf_vs_moose.pl 20
benchmarks/cmop/all.yml 10
benchmarks/cmop/lib/Plain/Point.pm 10
benchmarks/cmop/lib/Plain/Point3D.pm 10
benchmarks/cmop/run_yml.pl 20
benchmarks/lotsa-classes.pl 10
benchmarks/method_modifiers.pl 10
benchmarks/moose_bench.pl 32
benchmarks/type_constraints2.pl 10
dist.ini 2568
inc/Clean.pm 100
inc/ExtractInlineTests.pm 30
inc/GenerateDocs.pm 56
inc/MMHelper.pm 20
inc/MyInline.pm 112
inc/RequireAuthorDeps.pm 270
inc/SimpleProvides.pm 031
lib/Class/MOP/Attribute.pm 1411
lib/Class/MOP/Class/Immutable/Trait.pm 713
lib/Class/MOP/Class.pm 4142
lib/Class/MOP/Deprecated.pm 22
lib/Class/MOP/Instance.pm 32
lib/Class/MOP/Method/Accessor.pm 2017
lib/Class/MOP/Method/Constructor.pm 75
lib/Class/MOP/Method/Generated.pm 74
lib/Class/MOP/Method/Inlined.pm 22
lib/Class/MOP/Method/Meta.pm 53
lib/Class/MOP/Method/Overload.pm 53
lib/Class/MOP/Method/Wrapped.pm 63
lib/Class/MOP/Method.pm 75
lib/Class/MOP/MiniTrait.pm 23
lib/Class/MOP/Mixin/AttributeCore.pm 22
lib/Class/MOP/Mixin/HasAttributes.pm 97
lib/Class/MOP/Mixin/HasMethods.pm 87
lib/Class/MOP/Mixin.pm 515
lib/Class/MOP/Module.pm 65
lib/Class/MOP/Object.pm 169
lib/Class/MOP/Package.pm 74
lib/Class/MOP.pm 42
lib/Moose/Conflicts.pm 22
lib/Moose/Cookbook/Basics/BankAccount_MethodModifiersAndSubclassing.pod 52
lib/Moose/Cookbook/Basics/BinaryTree_AttributeFeatures.pod 52
lib/Moose/Cookbook/Basics/BinaryTree_BuilderAndLazyBuild.pod 52
lib/Moose/Cookbook/Basics/Company_Subtypes.pod 52
lib/Moose/Cookbook/Basics/DateTime_ExtendingNonMooseParent.pod 52
lib/Moose/Cookbook/Basics/Document_AugmentAndInner.pod 52
lib/Moose/Cookbook/Basics/Genome_OverloadingSubtypesAndCoercion.pod 52
lib/Moose/Cookbook/Basics/HTTP_SubtypesAndCoercion.pod 52
lib/Moose/Cookbook/Basics/Immutable.pod 52
lib/Moose/Cookbook/Basics/Person_BUILDARGSAndBUILD.pod 52
lib/Moose/Cookbook/Basics/Point_AttributesAndSubclassing.pod 52
lib/Moose/Cookbook/Extending/Debugging_BaseClassRole.pod 83
lib/Moose/Cookbook/Extending/ExtensionOverview.pod 52
lib/Moose/Cookbook/Extending/Mooseish_MooseSugar.pod 52
lib/Moose/Cookbook/Legacy/Debugging_BaseClassReplacement.pod 83
lib/Moose/Cookbook/Legacy/Labeled_AttributeMetaclass.pod 63
lib/Moose/Cookbook/Legacy/Table_ClassMetaclass.pod 63
lib/Moose/Cookbook/Meta/GlobRef_InstanceMetaclass.pod 52
lib/Moose/Cookbook/Meta/Labeled_AttributeTrait.pod 52
lib/Moose/Cookbook/Meta/PrivateOrPublic_MethodMetaclass.pod 52
lib/Moose/Cookbook/Meta/Table_MetaclassTrait.pod 52
lib/Moose/Cookbook/Meta/WhyMeta.pod 52
lib/Moose/Cookbook/Roles/ApplicationToInstance.pod 52
lib/Moose/Cookbook/Roles/Comparable_CodeReuse.pod 52
lib/Moose/Cookbook/Roles/Restartable_AdvancedComposition.pod 52
lib/Moose/Cookbook/Snack/Keywords.pod 52
lib/Moose/Cookbook/Snack/Types.pod 52
lib/Moose/Cookbook/Style.pod 52
lib/Moose/Cookbook.pod 52
lib/Moose/Deprecated.pm 22
lib/Moose/Exception/AccessorMustReadWrite.pm 11
lib/Moose/Exception/AddParameterizableTypeTakesParameterizableType.pm 11
lib/Moose/Exception/AddRoleTakesAMooseMetaRoleInstance.pm 11
lib/Moose/Exception/AddRoleToARoleTakesAMooseMetaRole.pm 11
lib/Moose/Exception/ApplyTakesABlessedInstance.pm 11
lib/Moose/Exception/AttachToClassNeedsAClassMOPClassInstanceOrASubclass.pm 11
lib/Moose/Exception/AttributeConflictInRoles.pm 810
lib/Moose/Exception/AttributeConflictInSummation.pm 55
lib/Moose/Exception/AttributeExtensionIsNotSupportedInRoles.pm 11
lib/Moose/Exception/AttributeIsRequired.pm 817
lib/Moose/Exception/AttributeMustBeAnClassMOPMixinAttributeCoreOrSubclass.pm 11
lib/Moose/Exception/AttributeNamesDoNotMatch.pm 11
lib/Moose/Exception/AttributeValueIsNotAnObject.pm 11
lib/Moose/Exception/AttributeValueIsNotDefined.pm 11
lib/Moose/Exception/AutoDeRefNeedsArrayRefOrHashRef.pm 11
lib/Moose/Exception/BadOptionFormat.pm 11
lib/Moose/Exception/BothBuilderAndDefaultAreNotAllowed.pm 11
lib/Moose/Exception/BuilderDoesNotExist.pm 11
lib/Moose/Exception/BuilderMethodNotSupportedForAttribute.pm 11
lib/Moose/Exception/BuilderMethodNotSupportedForInlineAttribute.pm 11
lib/Moose/Exception/BuilderMustBeAMethodName.pm 11
lib/Moose/Exception/CallingMethodOnAnImmutableInstance.pm 11
lib/Moose/Exception/CallingReadOnlyMethodOnAnImmutableInstance.pm 11
lib/Moose/Exception/CanExtendOnlyClasses.pm 95
lib/Moose/Exception/CanOnlyConsumeRole.pm 11
lib/Moose/Exception/CanOnlyWrapBlessedCode.pm 11
lib/Moose/Exception/CanReblessOnlyIntoASubclass.pm 45
lib/Moose/Exception/CanReblessOnlyIntoASuperclass.pm 33
lib/Moose/Exception/CannotAddAdditionalTypeCoercionsToUnion.pm 11
lib/Moose/Exception/CannotAddAsAnAttributeToARole.pm 11
lib/Moose/Exception/CannotApplyBaseClassRolesToRole.pm 11
lib/Moose/Exception/CannotAssignValueToReadOnlyAccessor.pm 11
lib/Moose/Exception/CannotAugmentIfLocalMethodPresent.pm 11
lib/Moose/Exception/CannotAugmentNoSuperMethod.pm 11
lib/Moose/Exception/CannotAutoDerefWithoutIsa.pm 11
lib/Moose/Exception/CannotAutoDereferenceTypeConstraint.pm 11
lib/Moose/Exception/CannotCalculateNativeType.pm 11
lib/Moose/Exception/CannotCallAnAbstractBaseMethod.pm 11
lib/Moose/Exception/CannotCallAnAbstractMethod.pm 11
lib/Moose/Exception/CannotCoerceAWeakRef.pm 11
lib/Moose/Exception/CannotCoerceAttributeWhichHasNoCoercion.pm 11
lib/Moose/Exception/CannotCreateHigherOrderTypeWithoutATypeParameter.pm 11
lib/Moose/Exception/CannotCreateMethodAliasLocalMethodIsPresent.pm 33
lib/Moose/Exception/CannotCreateMethodAliasLocalMethodIsPresentInClass.pm 11
lib/Moose/Exception/CannotDelegateLocalMethodIsPresent.pm 11
lib/Moose/Exception/CannotDelegateWithoutIsa.pm 11
lib/Moose/Exception/CannotFindDelegateMetaclass.pm 11
lib/Moose/Exception/CannotFindType.pm 11
lib/Moose/Exception/CannotFindTypeGivenToMatchOnType.pm 11
lib/Moose/Exception/CannotFixMetaclassCompatibility.pm 11
lib/Moose/Exception/CannotGenerateInlineConstraint.pm 68
lib/Moose/Exception/CannotInitializeMooseMetaRoleComposite.pm 11
lib/Moose/Exception/CannotInlineTypeConstraintCheck.pm 11
lib/Moose/Exception/CannotLocatePackageInINC.pm 28
lib/Moose/Exception/CannotMakeMetaclassCompatible.pm 11
lib/Moose/Exception/CannotOverrideALocalMethod.pm 11
lib/Moose/Exception/CannotOverrideBodyOfMetaMethods.pm 11
lib/Moose/Exception/CannotOverrideLocalMethodIsPresent.pm 11
lib/Moose/Exception/CannotOverrideNoSuperMethod.pm 11
lib/Moose/Exception/CannotRegisterUnnamedTypeConstraint.pm 21
lib/Moose/Exception/CannotUseLazyBuildAndDefaultSimultaneously.pm 11
lib/Moose/Exception/CircularReferenceInAlso.pm 11
lib/Moose/Exception/ClassDoesNotHaveInitMeta.pm 11
lib/Moose/Exception/ClassDoesTheExcludedRole.pm 57
lib/Moose/Exception/ClassNamesDoNotMatch.pm 11
lib/Moose/Exception/CloneObjectExpectsAnInstanceOfMetaclass.pm 22
lib/Moose/Exception/CodeBlockMustBeACodeRef.pm 11
lib/Moose/Exception/CoercingWithoutCoercions.pm 72
lib/Moose/Exception/CoercionAlreadyExists.pm 11
lib/Moose/Exception/CoercionNeedsTypeConstraint.pm 11
lib/Moose/Exception/ConflictDetectedInCheckRoleExclusions.pm 57
lib/Moose/Exception/ConflictDetectedInCheckRoleExclusionsInToClass.pm 35
lib/Moose/Exception/ConstructClassInstanceTakesPackageName.pm 11
lib/Moose/Exception/CouldNotCreateMethod.pm 11
lib/Moose/Exception/CouldNotCreateWriter.pm 11
lib/Moose/Exception/CouldNotEvalConstructor.pm 11
lib/Moose/Exception/CouldNotEvalDestructor.pm 11
lib/Moose/Exception/CouldNotFindTypeConstraintToCoerceFrom.pm 11
lib/Moose/Exception/CouldNotGenerateInlineAttributeMethod.pm 11
lib/Moose/Exception/CouldNotLocateTypeConstraintForUnion.pm 11
lib/Moose/Exception/CouldNotParseType.pm 11
lib/Moose/Exception/CreateMOPClassTakesArrayRefOfAttributes.pm 11
lib/Moose/Exception/CreateMOPClassTakesArrayRefOfSuperclasses.pm 11
lib/Moose/Exception/CreateMOPClassTakesHashRefOfMethods.pm 11
lib/Moose/Exception/CreateTakesArrayRefOfRoles.pm 21
lib/Moose/Exception/CreateTakesHashRefOfAttributes.pm 11
lib/Moose/Exception/CreateTakesHashRefOfMethods.pm 11
lib/Moose/Exception/DefaultToMatchOnTypeMustBeCodeRef.pm 11
lib/Moose/Exception/DelegationToAClassWhichIsNotLoaded.pm 11
lib/Moose/Exception/DelegationToARoleWhichIsNotLoaded.pm 11
lib/Moose/Exception/DelegationToATypeWhichIsNotAClass.pm 11
lib/Moose/Exception/DoesRequiresRoleName.pm 72
lib/Moose/Exception/EnumCalledWithAnArrayRefAndAdditionalArgs.pm 11
lib/Moose/Exception/EnumValuesMustBeString.pm 11
lib/Moose/Exception/ExtendsMissingArgs.pm 11
lib/Moose/Exception/HandlesMustBeAHashRef.pm 11
lib/Moose/Exception/IllegalInheritedOptions.pm 11
lib/Moose/Exception/IllegalMethodTypeToAddMethodModifier.pm 11
lib/Moose/Exception/IncompatibleMetaclassOfSuperclass.pm 98
lib/Moose/Exception/InitMetaRequiresClass.pm 11
lib/Moose/Exception/InitializeTakesUnBlessedPackageName.pm 11
lib/Moose/Exception/InstanceBlessedIntoWrongClass.pm 22
lib/Moose/Exception/InstanceMustBeABlessedReference.pm 11
lib/Moose/Exception/InvalidArgPassedToMooseUtilMetaRole.pm 11
lib/Moose/Exception/InvalidArgumentToMethod.pm 11
lib/Moose/Exception/InvalidArgumentsToTraitAliases.pm 11
lib/Moose/Exception/InvalidBaseTypeGivenToCreateParameterizedTypeConstraint.pm 11
lib/Moose/Exception/InvalidHandleValue.pm 11
lib/Moose/Exception/InvalidHasProvidedInARole.pm 11
lib/Moose/Exception/InvalidNameForType.pm 11
lib/Moose/Exception/InvalidRoleApplication.pm 11
lib/Moose/Exception/InvalidTypeConstraint.pm 11
lib/Moose/Exception/InvalidTypeGivenToCreateParameterizedTypeConstraint.pm 11
lib/Moose/Exception/InvalidValueForIs.pm 11
lib/Moose/Exception/IsaDoesNotDoTheRole.pm 11
lib/Moose/Exception/IsaLacksDoesMethod.pm 11
lib/Moose/Exception/LazyAttributeNeedsADefault.pm 11
lib/Moose/Exception/Legacy.pm 11
lib/Moose/Exception/MOPAttributeNewNeedsAttributeName.pm 11
lib/Moose/Exception/MatchActionMustBeACodeRef.pm 83
lib/Moose/Exception/MessageParameterMustBeCodeRef.pm 11
lib/Moose/Exception/MetaclassIsAClassNotASubclassOfGivenMetaclass.pm 36
lib/Moose/Exception/MetaclassIsARoleNotASubclassOfGivenMetaclass.pm 38
lib/Moose/Exception/MetaclassIsNotASubclassOfGivenMetaclass.pm 25
lib/Moose/Exception/MetaclassMustBeASubclassOfMooseMetaClass.pm 11
lib/Moose/Exception/MetaclassMustBeASubclassOfMooseMetaRole.pm 11
lib/Moose/Exception/MetaclassMustBeDerivedFromClassMOPClass.pm 11
lib/Moose/Exception/MetaclassNotLoaded.pm 11
lib/Moose/Exception/MetaclassTypeIncompatible.pm 26
lib/Moose/Exception/MethodExpectedAMetaclassObject.pm 11
lib/Moose/Exception/MethodExpectsFewerArgs.pm 11
lib/Moose/Exception/MethodExpectsMoreArgs.pm 11
lib/Moose/Exception/MethodModifierNeedsMethodName.pm 11
lib/Moose/Exception/MethodNameConflictInRoles.pm 11
lib/Moose/Exception/MethodNameNotFoundInInheritanceHierarchy.pm 22
lib/Moose/Exception/MethodNameNotGiven.pm 11
lib/Moose/Exception/MustDefineAMethodName.pm 11
lib/Moose/Exception/MustDefineAnAttributeName.pm 11
lib/Moose/Exception/MustHaveAtLeastOneValueToEnumerate.pm 11
lib/Moose/Exception/MustPassAHashOfOptions.pm 11
lib/Moose/Exception/MustPassAMooseMetaRoleInstanceOrSubclass.pm 11
lib/Moose/Exception/MustPassAPackageNameOrAnExistingClassMOPPackageInstance.pm 11
lib/Moose/Exception/MustPassEvenNumberOfArguments.pm 11
lib/Moose/Exception/MustPassEvenNumberOfAttributeOptions.pm 11
lib/Moose/Exception/MustProvideANameForTheAttribute.pm 11
lib/Moose/Exception/MustSpecifyAtleastOneMethod.pm 11
lib/Moose/Exception/MustSpecifyAtleastOneRole.pm 11
lib/Moose/Exception/MustSpecifyAtleastOneRoleToApplicant.pm 11
lib/Moose/Exception/MustSupplyAClassMOPAttributeInstance.pm 11
lib/Moose/Exception/MustSupplyADelegateToMethod.pm 11
lib/Moose/Exception/MustSupplyAMetaclass.pm 11
lib/Moose/Exception/MustSupplyAMooseMetaAttributeInstance.pm 11
lib/Moose/Exception/MustSupplyAnAccessorTypeToConstructWith.pm 11
lib/Moose/Exception/MustSupplyAnAttributeToConstructWith.pm 11
lib/Moose/Exception/MustSupplyArrayRefAsCurriedArguments.pm 11
lib/Moose/Exception/MustSupplyPackageNameAndName.pm 11
lib/Moose/Exception/NeedsTypeConstraintUnionForTypeCoercionUnion.pm 24
lib/Moose/Exception/NeitherAttributeNorAttributeNameIsGiven.pm 11
lib/Moose/Exception/NeitherClassNorClassNameIsGiven.pm 11
lib/Moose/Exception/NeitherRoleNorRoleNameIsGiven.pm 11
lib/Moose/Exception/NeitherTypeNorTypeNameIsGiven.pm 11
lib/Moose/Exception/NoAttributeFoundInSuperClass.pm 22
lib/Moose/Exception/NoBodyToInitializeInAnAbstractBaseClass.pm 11
lib/Moose/Exception/NoCasesMatched.pm 11
lib/Moose/Exception/NoConstraintCheckForTypeConstraint.pm 11
lib/Moose/Exception/NoDestructorClassSpecified.pm 11
lib/Moose/Exception/NoImmutableTraitSpecifiedForClass.pm 36
lib/Moose/Exception/NoParentGivenToSubtype.pm 11
lib/Moose/Exception/OnlyInstancesCanBeCloned.pm 11
lib/Moose/Exception/OperatorIsRequired.pm 11
lib/Moose/Exception/OverrideConflictInComposition.pm 55
lib/Moose/Exception/OverrideConflictInSummation.pm 913
lib/Moose/Exception/PackageDoesNotUseMooseExporter.pm 11
lib/Moose/Exception/PackageNameAndNameParamsNotGivenToWrap.pm 11
lib/Moose/Exception/PackagesAndModulesAreNotCachable.pm 11
lib/Moose/Exception/ParameterIsNotSubtypeOfParent.pm 25
lib/Moose/Exception/ReferencesAreNotAllowedAsDefault.pm 11
lib/Moose/Exception/RequiredAttributeLacksInitialization.pm 11
lib/Moose/Exception/RequiredAttributeNeedsADefault.pm 11
lib/Moose/Exception/RequiredMethodsImportedByClass.pm 22
lib/Moose/Exception/RequiredMethodsNotImplementedByClass.pm 11
lib/Moose/Exception/Role/Attribute.pm 11
lib/Moose/Exception/Role/AttributeName.pm 11
lib/Moose/Exception/Role/Class.pm 476
lib/Moose/Exception/Role/EitherAttributeOrAttributeName.pm 11
lib/Moose/Exception/Role/Instance.pm 11
lib/Moose/Exception/Role/InstanceClass.pm 014
lib/Moose/Exception/Role/InvalidAttributeOptions.pm 11
lib/Moose/Exception/Role/Method.pm 11
lib/Moose/Exception/Role/ParamsHash.pm 11
lib/Moose/Exception/Role/Role.pm 428
lib/Moose/Exception/Role/RoleForCreate.pm 21
lib/Moose/Exception/Role/RoleForCreateMOPClass.pm 21
lib/Moose/Exception/Role/TypeConstraint.pm 436
lib/Moose/Exception/RoleDoesTheExcludedRole.pm 79
lib/Moose/Exception/RoleExclusionConflict.pm 11
lib/Moose/Exception/RoleNameRequired.pm 11
lib/Moose/Exception/RoleNameRequiredForMooseMetaRole.pm 11
lib/Moose/Exception/RoleNamesDoNotMatch.pm 260
lib/Moose/Exception/RolesDoNotSupportAugment.pm 11
lib/Moose/Exception/RolesDoNotSupportExtends.pm 11
lib/Moose/Exception/RolesDoNotSupportInner.pm 11
lib/Moose/Exception/RolesDoNotSupportRegexReferencesForMethodModifiers.pm 11
lib/Moose/Exception/RolesInCreateTakesAnArrayRef.pm 11
lib/Moose/Exception/RolesListMustBeInstancesOfMooseMetaRole.pm 11
lib/Moose/Exception/SingleParamsToNewMustBeHashRef.pm 11
lib/Moose/Exception/TriggerMustBeACodeRef.pm 11
lib/Moose/Exception/TypeConstraintCannotBeUsedForAParameterizableType.pm 414
lib/Moose/Exception/TypeConstraintIsAlreadyCreated.pm 39
lib/Moose/Exception/TypeNamesDoNotMatch.pm 260
lib/Moose/Exception/TypeParameterMustBeMooseMetaType.pm 11
lib/Moose/Exception/UnableToCanonicalizeHandles.pm 11
lib/Moose/Exception/UnableToCanonicalizeNonRolePackage.pm 11
lib/Moose/Exception/UnableToRecognizeDelegateMetaclass.pm 11
lib/Moose/Exception/UndefinedHashKeysPassedToMethod.pm 11
lib/Moose/Exception/UnionCalledWithAnArrayRefAndAdditionalArgs.pm 11
lib/Moose/Exception/UnionTakesAtleastTwoTypeNames.pm 11
lib/Moose/Exception/ValidationFailedForInlineTypeConstraint.pm 11
lib/Moose/Exception/ValidationFailedForTypeConstraint.pm 11
lib/Moose/Exception/WrapTakesACodeRefToBless.pm 11
lib/Moose/Exception/WrongTypeConstraintGiven.pm 11
lib/Moose/Exception.pm 616
lib/Moose/Exporter.pm 22
lib/Moose/Intro.pod 52
lib/Moose/Manual/Attributes.pod 52
lib/Moose/Manual/BestPractices.pod 52
lib/Moose/Manual/Classes.pod 52
lib/Moose/Manual/Concepts.pod 52
lib/Moose/Manual/Construction.pod 52
lib/Moose/Manual/Contributing.pod 52
lib/Moose/Manual/Delegation.pod 52
lib/Moose/Manual/Delta.pod 63
lib/Moose/Manual/Exceptions/Manifest.pod 780350
lib/Moose/Manual/Exceptions.pod 52
lib/Moose/Manual/FAQ.pod 52
lib/Moose/Manual/MOP.pod 52
lib/Moose/Manual/MethodModifiers.pod 52
lib/Moose/Manual/MooseX.pod 52
lib/Moose/Manual/Roles.pod 52
lib/Moose/Manual/Support.pod 1514
lib/Moose/Manual/Types.pod 52
lib/Moose/Manual/Unsweetened.pod 52
lib/Moose/Manual.pod 52
lib/Moose/Meta/Attribute/Native/Trait/Array.pm 22
lib/Moose/Meta/Attribute/Native/Trait/Bool.pm 22
lib/Moose/Meta/Attribute/Native/Trait/Code.pm 22
lib/Moose/Meta/Attribute/Native/Trait/Counter.pm 22
lib/Moose/Meta/Attribute/Native/Trait/Hash.pm 33
lib/Moose/Meta/Attribute/Native/Trait/Number.pm 22
lib/Moose/Meta/Attribute/Native/Trait/String.pm 22
lib/Moose/Meta/Attribute/Native/Trait.pm 75
lib/Moose/Meta/Attribute/Native.pm 22
lib/Moose/Meta/Attribute.pm 1819
lib/Moose/Meta/Class/Immutable/Trait.pm 33
lib/Moose/Meta/Class.pm 1716
lib/Moose/Meta/Instance.pm 32
lib/Moose/Meta/Method/Accessor/Native/Array/Writer.pm 11
lib/Moose/Meta/Method/Accessor/Native/Array/accessor.pm 11
lib/Moose/Meta/Method/Accessor/Native/Array/clear.pm 11
lib/Moose/Meta/Method/Accessor/Native/Array/count.pm 11
lib/Moose/Meta/Method/Accessor/Native/Array/delete.pm 11
lib/Moose/Meta/Method/Accessor/Native/Array/elements.pm 11
lib/Moose/Meta/Method/Accessor/Native/Array/first.pm 22
lib/Moose/Meta/Method/Accessor/Native/Array/first_index.pm 22
lib/Moose/Meta/Method/Accessor/Native/Array/get.pm 11
lib/Moose/Meta/Method/Accessor/Native/Array/grep.pm 22
lib/Moose/Meta/Method/Accessor/Native/Array/insert.pm 11
lib/Moose/Meta/Method/Accessor/Native/Array/is_empty.pm 11
lib/Moose/Meta/Method/Accessor/Native/Array/join.pm 22
lib/Moose/Meta/Method/Accessor/Native/Array/map.pm 22
lib/Moose/Meta/Method/Accessor/Native/Array/natatime.pm 33
lib/Moose/Meta/Method/Accessor/Native/Array/pop.pm 11
lib/Moose/Meta/Method/Accessor/Native/Array/push.pm 11
lib/Moose/Meta/Method/Accessor/Native/Array/reduce.pm 22
lib/Moose/Meta/Method/Accessor/Native/Array/set.pm 11
lib/Moose/Meta/Method/Accessor/Native/Array/shallow_clone.pm 11
lib/Moose/Meta/Method/Accessor/Native/Array/shift.pm 11
lib/Moose/Meta/Method/Accessor/Native/Array/shuffle.pm 11
lib/Moose/Meta/Method/Accessor/Native/Array/sort.pm 22
lib/Moose/Meta/Method/Accessor/Native/Array/sort_in_place.pm 22
lib/Moose/Meta/Method/Accessor/Native/Array/splice.pm 22
lib/Moose/Meta/Method/Accessor/Native/Array/uniq.pm 11
lib/Moose/Meta/Method/Accessor/Native/Array/unshift.pm 11
lib/Moose/Meta/Method/Accessor/Native/Array.pm 22
lib/Moose/Meta/Method/Accessor/Native/Bool/not.pm 11
lib/Moose/Meta/Method/Accessor/Native/Bool/set.pm 11
lib/Moose/Meta/Method/Accessor/Native/Bool/toggle.pm 11
lib/Moose/Meta/Method/Accessor/Native/Bool/unset.pm 11
lib/Moose/Meta/Method/Accessor/Native/Code/execute.pm 11
lib/Moose/Meta/Method/Accessor/Native/Code/execute_method.pm 11
lib/Moose/Meta/Method/Accessor/Native/Collection.pm 22
lib/Moose/Meta/Method/Accessor/Native/Counter/Writer.pm 11
lib/Moose/Meta/Method/Accessor/Native/Counter/dec.pm 11
lib/Moose/Meta/Method/Accessor/Native/Counter/inc.pm 11
lib/Moose/Meta/Method/Accessor/Native/Counter/reset.pm 11
lib/Moose/Meta/Method/Accessor/Native/Counter/set.pm 11
lib/Moose/Meta/Method/Accessor/Native/Hash/Writer.pm 11
lib/Moose/Meta/Method/Accessor/Native/Hash/accessor.pm 11
lib/Moose/Meta/Method/Accessor/Native/Hash/clear.pm 11
lib/Moose/Meta/Method/Accessor/Native/Hash/count.pm 11
lib/Moose/Meta/Method/Accessor/Native/Hash/defined.pm 11
lib/Moose/Meta/Method/Accessor/Native/Hash/delete.pm 11
lib/Moose/Meta/Method/Accessor/Native/Hash/elements.pm 11
lib/Moose/Meta/Method/Accessor/Native/Hash/exists.pm 11
lib/Moose/Meta/Method/Accessor/Native/Hash/get.pm 11
lib/Moose/Meta/Method/Accessor/Native/Hash/is_empty.pm 11
lib/Moose/Meta/Method/Accessor/Native/Hash/keys.pm 11
lib/Moose/Meta/Method/Accessor/Native/Hash/kv.pm 11
lib/Moose/Meta/Method/Accessor/Native/Hash/set.pm 33
lib/Moose/Meta/Method/Accessor/Native/Hash/shallow_clone.pm 11
lib/Moose/Meta/Method/Accessor/Native/Hash/values.pm 11
lib/Moose/Meta/Method/Accessor/Native/Hash.pm 22
lib/Moose/Meta/Method/Accessor/Native/Number/abs.pm 11
lib/Moose/Meta/Method/Accessor/Native/Number/add.pm 11
lib/Moose/Meta/Method/Accessor/Native/Number/div.pm 11
lib/Moose/Meta/Method/Accessor/Native/Number/mod.pm 11
lib/Moose/Meta/Method/Accessor/Native/Number/mul.pm 11
lib/Moose/Meta/Method/Accessor/Native/Number/set.pm 11
lib/Moose/Meta/Method/Accessor/Native/Number/sub.pm 11
lib/Moose/Meta/Method/Accessor/Native/Reader.pm 11
lib/Moose/Meta/Method/Accessor/Native/String/append.pm 11
lib/Moose/Meta/Method/Accessor/Native/String/chomp.pm 11
lib/Moose/Meta/Method/Accessor/Native/String/chop.pm 11
lib/Moose/Meta/Method/Accessor/Native/String/clear.pm 11
lib/Moose/Meta/Method/Accessor/Native/String/inc.pm 11
lib/Moose/Meta/Method/Accessor/Native/String/length.pm 11
lib/Moose/Meta/Method/Accessor/Native/String/match.pm 22
lib/Moose/Meta/Method/Accessor/Native/String/prepend.pm 11
lib/Moose/Meta/Method/Accessor/Native/String/replace.pm 33
lib/Moose/Meta/Method/Accessor/Native/String/substr.pm 44
lib/Moose/Meta/Method/Accessor/Native/Writer.pm 34
lib/Moose/Meta/Method/Accessor/Native.pm 33
lib/Moose/Meta/Method/Accessor.pm 32
lib/Moose/Meta/Method/Augmented.pm 22
lib/Moose/Meta/Method/Constructor.pm 32
lib/Moose/Meta/Method/Delegation.pm 32
lib/Moose/Meta/Method/Destructor.pm 32
lib/Moose/Meta/Method/Meta.pm 32
lib/Moose/Meta/Method/Overridden.pm 22
lib/Moose/Meta/Method.pm 22
lib/Moose/Meta/Mixin/AttributeCore.pm 22
lib/Moose/Meta/Object/Trait.pm 32
lib/Moose/Meta/Role/Application/RoleSummation.pm 78
lib/Moose/Meta/Role/Application/ToClass.pm 1515
lib/Moose/Meta/Role/Application/ToInstance.pm 22
lib/Moose/Meta/Role/Application/ToRole.pm 2121
lib/Moose/Meta/Role/Application.pm 22
lib/Moose/Meta/Role/Attribute.pm 22
lib/Moose/Meta/Role/Composite.pm 28
lib/Moose/Meta/Role/Method/Conflicting.pm 32
lib/Moose/Meta/Role/Method/Required.pm 32
lib/Moose/Meta/Role/Method.pm 32
lib/Moose/Meta/Role.pm 1010
lib/Moose/Meta/TypeCoercion/Union.pm 44
lib/Moose/Meta/TypeCoercion.pm 32
lib/Moose/Meta/TypeConstraint/Class.pm 22
lib/Moose/Meta/TypeConstraint/DuckType.pm 22
lib/Moose/Meta/TypeConstraint/Enum.pm 22
lib/Moose/Meta/TypeConstraint/Parameterizable.pm 66
lib/Moose/Meta/TypeConstraint/Parameterized.pm 57
lib/Moose/Meta/TypeConstraint/Registry.pm 32
lib/Moose/Meta/TypeConstraint/Role.pm 22
lib/Moose/Meta/TypeConstraint/Union.pm 32
lib/Moose/Meta/TypeConstraint.pm 65
lib/Moose/Object.pm 43
lib/Moose/Role.pm 910
lib/Moose/Spec/Role.pod 52
lib/Moose/Unsweetened.pod 52
lib/Moose/Util/MetaRole.pm 44
lib/Moose/Util/TypeConstraints/Builtins.pm 21
lib/Moose/Util/TypeConstraints.pm 98
lib/Moose/Util.pm 215
lib/Moose.pm 35
lib/Test/Moose.pm 63
lib/metaclass.pm 74
lib/oose.pm 22
moose-todo.txt 90
t/00-report-prereqs.t 4168
t/attributes/accessor_override_method.t 31
t/attributes/accessor_overwrite_warning.t 31
t/basics/always_strict_warnings.t 02
t/basics/buildargs_warning.t 31
t/basics/deprecations.t 10
t/basics/super_warns_on_args.t 41
t/bugs/DEMOLISHALL_shortcutted.t 03
t/bugs/attribute_trait_parameters.t 32
t/bugs/lazybuild_required_undef.t 03
t/bugs/moose_octal_defaults.t 03
t/bugs/role_caller.t 03
t/bugs/traits_with_exporter.t 11
t/cmop/ArrayBasedStorage_test.t 51
t/cmop/AttributesWithHistory_test.t 61
t/cmop/BinaryTree_test.t 41
t/cmop/C3MethodDispatchOrder_test.t 92
t/cmop/ClassEncapsulatedAttributes_test.t 61
t/cmop/InsideOutClass_test.t 51
t/cmop/InstanceCountingClass_test.t 51
t/cmop/LazyClass_test.t 51
t/cmop/Perl6Attribute_test.t 51
t/cmop/add_method_debugmode.t 10
t/cmop/anon_class_leak.t 42
t/cmop/deprecated.t 62
t/cmop/immutable_w_custom_metaclass.t 41
t/cmop/inline_structor.t 41
t/cmop/lib/ArrayBasedStorage.pm 10
t/cmop/lib/AttributesWithHistory.pm 10
t/cmop/lib/BinaryTree.pm 10
t/cmop/lib/C3MethodDispatchOrder.pm 10
t/cmop/lib/ClassEncapsulatedAttributes.pm 10
t/cmop/lib/InsideOutClass.pm 10
t/cmop/lib/InstanceCountingClass.pm 10
t/cmop/lib/LazyClass.pm 10
t/cmop/lib/MyMetaClass/Attribute.pm 10
t/cmop/lib/MyMetaClass/Instance.pm 10
t/cmop/lib/MyMetaClass/Method.pm 10
t/cmop/lib/MyMetaClass/Random.pm 10
t/cmop/lib/MyMetaClass.pm 10
t/cmop/lib/Perl6Attribute.pm 10
t/cmop/lib/SyntaxError.pm 20
t/cmop/magic.t 33
t/cmop/metaclass_loads_classes.t 41
t/cmop/methods.t 11
t/cmop/new_and_clone_metaclasses.t 41
t/cmop/scala_style_mixin_composition.t 10
t/cmop/self_introspection.t 01
t/compat/module_refresh_compat.t 31
t/examples/example_Moose_POOP.t 11
t/examples/example_w_DCS.t 41
t/examples/example_w_TestDeep.t 41
t/exceptions/attribute.t 193192
t/exceptions/class-mop-attribute.t 98
t/exceptions/class-mop-class-immutable-trait.t 1211
t/exceptions/class-mop-class.t 123122
t/exceptions/class-mop-method-accessor.t 2019
t/exceptions/class-mop-method-constructor.t 32
t/exceptions/class-mop-method-generated.t 10
t/exceptions/class-mop-method-meta.t 32
t/exceptions/class-mop-method-overload.t 10
t/exceptions/class-mop-method-wrapped.t 10
t/exceptions/class-mop-method.t 76
t/exceptions/class-mop-mixin-hasattributes.t 2322
t/exceptions/class-mop-mixin-hasmethods.t 10
t/exceptions/class-mop-module.t 10
t/exceptions/class-mop-object.t 11
t/exceptions/class-mop-package.t 10
t/exceptions/class.t 4239
t/exceptions/cmop.t 020
t/exceptions/exception-attributeisrequired.t 1540
t/exceptions/exception-lazyattributeneedsadefault.t 21
t/exceptions/exception-role-class.t 1040
t/exceptions/exception-role-role.t 1040
t/exceptions/exception-role-type.t 1010
t/exceptions/meta-role.t 76
t/exceptions/metaclass.t 10
t/exceptions/moose-exporter.t 21
t/exceptions/moose-meta-attribute-native-traits.t 10
t/exceptions/moose-meta-class-immutable-trait.t 32
t/exceptions/moose-meta-method-accessor-native-array.t 109
t/exceptions/moose-meta-method-accessor-native-collection.t 65
t/exceptions/moose-meta-method-accessor-native-grep.t 10
t/exceptions/moose-meta-method-accessor-native-hash-set.t 10
t/exceptions/moose-meta-method-accessor-native-hash.t 10
t/exceptions/moose-meta-method-accessor-native-string-match.t 98
t/exceptions/moose-meta-method-accessor-native-string-replace.t 98
t/exceptions/moose-meta-method-accessor-native-string-substr.t 109
t/exceptions/moose-meta-method-accessor-native.t 10
t/exceptions/moose-meta-method-accessor.t 10
t/exceptions/moose-meta-method-augmented.t 10
t/exceptions/moose-meta-method-constructor.t 54
t/exceptions/moose-meta-method-delegation.t 54
t/exceptions/moose-meta-method-destructor.t 109
t/exceptions/moose-meta-method-overridden.t 65
t/exceptions/moose-meta-role-application-rolesummation.t 21
t/exceptions/moose-meta-role-application-toclass.t 2415
t/exceptions/moose-meta-role-application-torole.t 3132
t/exceptions/moose-meta-role-application.t 87
t/exceptions/moose-meta-role-attribute.t 32
t/exceptions/moose-meta-role-composite.t 43
t/exceptions/moose-meta-typecoercion-union.t 21
t/exceptions/moose-meta-typecoercion.t 10
t/exceptions/moose-meta-typeconstraint-enum.t 65
t/exceptions/moose-meta-typeconstraint-parameterizable.t 65
t/exceptions/moose-meta-typeconstraint-parameterized.t 26
t/exceptions/moose-meta-typeconstraint-registry.t 10
t/exceptions/moose-meta-typeconstraint.t 54
t/exceptions/moose-role.t 1415
t/exceptions/moose-util-metarole.t 10
t/exceptions/moose-util-typeconstraints.t 21
t/exceptions/moose.t 1213
t/exceptions/object.t 32
t/exceptions/rt-92818.t 045
t/exceptions/rt-94795.t 034
t/exceptions/traits.t 034
t/exceptions/typeconstraints.t 5049
t/exceptions/util.t 2122
t/immutable/constructor_is_not_moose.t 41
t/immutable/constructor_is_wrapped.t 41
t/immutable/immutable_roundtrip.t 41
t/immutable/inline_close_over.t 23
t/lib/Bar.pm 10
t/lib/Foo.pm 21
t/lib/MyExporter.pm 20
t/metaclasses/create_anon_with_required_attr.t 33
t/metaclasses/exporter_meta_lookup.t 10
t/metaclasses/moose_exporter.t 41
t/metaclasses/use_base_of_moose.t 10
t/moose_util/moose_util.t 033
t/native_traits/hash_subtypes.t 10
t/recipes/basics_geonome_overloadingsubtypesandcoercion.t 2190
t/recipes/extending_debugging_baseclassrole.t 31
t/recipes/legacy_debugging_baseclassreplacement.t 31
t/recipes/legacy_labeled_attributemetaclass.t 086
t/recipes/meta_labeled_attributemetaclass.t 860
t/roles/build.t 42
t/roles/role_compose_requires.t 22
t/roles/role_composite.t 04
t/test_moose/with_immutable.t 30
t/test_moose/with_immutable_tb2.t 700
t/todo_tests/exception_reflects_failed_constraint.t 33
t/todo_tests/various_role_features.t 20
t/type_constraints/specio.t 2040
t/type_constraints/union_types_and_coercions.t 51
t/type_constraints/with-specio.t 0209
t/zzz-check-breaks.t 099
xt/author/00-compile.t 4330
xt/author/memory_leaks.t 6128
xt/release/00-compile.t 0432
xt/release/distmeta.t 31
xt/release/kwalitee.t 11
xt/release/no-tabs.t 4497
xt/release/pod-coverage.t 28
xt/release/pod-syntax.t 31
612 files changed (This is a version diff) 59195260
@@ -1,6 +1,79 @@
 Also see Moose::Manual::Delta for more details of, and workarounds
 for, noteworthy changes.
 
+2.1210   2014-07-03
+
+  [DOCUMENTATION]
+
+  - Clarify that Moose::Exception exists for internal usage and that user
+    code is better using the Throwable role or Throwable::Error superclass.
+  - Moose::Manual::Support policy clarified regarding legacy Perl versions
+
+  [OTHER]
+
+  - tests have been removed for an alpha branch of Test::Builder that will
+    never see the light of day (Exodist)
+
+2.1209   2014-06-04
+
+  [OTHER]
+
+  - The is_anon method now always returns false when called on
+    Moose::Meta::Role::Composite objects. This isn't strictly right, but for
+    the purposes of Moose internals, where "is_anon" really means "needs to be
+    cleaned up", it's correct. This fixes warnings that were seen when using
+    recent Moose (2.1100+) and MooseX::Role::Parameterized roles as part of a
+    composite role. These warnings only appear with Perl 5.16 and earlier.
+
+2.1208   2014-06-01
+
+  [BUG FIXES]
+
+  - fix implementation of throw_exception in internal Class::MOP traits,
+    caused by changes in 2.1207 (ether, RT#96112)
+
+2.1207   2014-05-26
+
+  [OTHER]
+
+  - Fixed Specio support to work with the latest Specio (0.10). This version of
+    Specio no longer uses Moose internally.
+  - exceptions in Class::MOP no longer use Moose::Util, instead using their
+    own private implementation of throw_exception, to avoid needless premature
+    loading of Moose logic.
+
+2.1206   2014-05-14
+
+  [BUG FIXES]
+
+  - exceptions should not throw other exceptions; fixes cases where exceptions
+    were reporting the wrong error (Upasana, RT#92818 and RT#94795)
+
+  [OTHER]
+
+  - prereqs needed strictly for building with Dist::Zilla have been moved from
+    develop requires to develop recommends, to simplify automated testing on
+    older perls that cannot install all Dist::Zilla components
+  - removed instances of metaobjects in exception classes where they're not
+    really required
+
+2.1205   2014-04-15
+
+  [ENHANCEMENTS]
+
+  - new utility interface: Moose::Util::is_role
+
+  [BUG FIXES]
+
+  - better error message provided when trying to load a trait class that does
+    not exist in @INC (Upasana, RT#94731)
+
+  [OTHER]
+
+  - new test added, to run last, which runs `moose-outdated` as a possibly
+    more visible mechanism to provide important information to the user
+    (re RT#92780)
+
 2.1204   2014-02-06
 
   [BUG FIXES]
@@ -16,6 +89,11 @@ for, noteworthy changes.
   - bump prereq on Module::Runtime to properly detect when a module fails to
     load, and fix how we call these subs (Zefram, RT#92770, RT#86394, RT#92791)
 
+  [ENHANCEMENTS]
+
+ - line numbers in shipped code are now almost the same (within 3) as the
+   repository source, for easier debugging
+
 2.1202   2014-01-19
 
   [BUG FIXES]
@@ -22,7 +22,7 @@ This is free software, licensed under:
                      Version 1, February 1989
 
  Copyright (C) 1989 Free Software Foundation, Inc.
- 51 Franklin St, Suite 500, Boston, MA  02110-1335  USA
+ 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
  Everyone is permitted to copy and distribute verbatim copies
  of this license document, but changing it is not allowed.
@@ -1,4 +1,4 @@
-# This file was automatically generated by Dist::Zilla::Plugin::Manifest v5.012.
+# This file was automatically generated by Dist::Zilla::Plugin::Manifest v5.019.
 Changes
 Changes.Class-MOP
 LICENSE
@@ -8,7 +8,6 @@ META.yml
 Makefile.PL
 README.md
 TODO
-author/convert-to-test-fatal
 author/docGenerator.pl
 author/extract-inline-tests
 author/find-dupe-test-numbers
@@ -49,7 +48,7 @@ inc/GitUpToDate.pm
 inc/MMHelper.pm
 inc/MakeMaker.pm
 inc/MyInline.pm
-inc/RequireAuthorDeps.pm
+inc/SimpleProvides.pm
 inc/TestRelease.pm
 lib/Class/MOP.pm
 lib/Class/MOP/Attribute.pm
@@ -292,6 +291,7 @@ lib/Moose/Exception/Role/AttributeName.pm
 lib/Moose/Exception/Role/Class.pm
 lib/Moose/Exception/Role/EitherAttributeOrAttributeName.pm
 lib/Moose/Exception/Role/Instance.pm
+lib/Moose/Exception/Role/InstanceClass.pm
 lib/Moose/Exception/Role/InvalidAttributeOptions.pm
 lib/Moose/Exception/Role/Method.pm
 lib/Moose/Exception/Role/ParamsHash.pm
@@ -303,7 +303,6 @@ lib/Moose/Exception/RoleDoesTheExcludedRole.pm
 lib/Moose/Exception/RoleExclusionConflict.pm
 lib/Moose/Exception/RoleNameRequired.pm
 lib/Moose/Exception/RoleNameRequiredForMooseMetaRole.pm
-lib/Moose/Exception/RoleNamesDoNotMatch.pm
 lib/Moose/Exception/RolesDoNotSupportAugment.pm
 lib/Moose/Exception/RolesDoNotSupportExtends.pm
 lib/Moose/Exception/RolesDoNotSupportInner.pm
@@ -314,7 +313,6 @@ lib/Moose/Exception/SingleParamsToNewMustBeHashRef.pm
 lib/Moose/Exception/TriggerMustBeACodeRef.pm
 lib/Moose/Exception/TypeConstraintCannotBeUsedForAParameterizableType.pm
 lib/Moose/Exception/TypeConstraintIsAlreadyCreated.pm
-lib/Moose/Exception/TypeNamesDoNotMatch.pm
 lib/Moose/Exception/TypeParameterMustBeMooseMetaType.pm
 lib/Moose/Exception/UnableToCanonicalizeHandles.pm
 lib/Moose/Exception/UnableToCanonicalizeNonRolePackage.pm
@@ -479,7 +477,6 @@ lib/Moose/Util/TypeConstraints/Builtins.pm
 lib/Test/Moose.pm
 lib/metaclass.pm
 lib/oose.pm
-moose-todo.txt
 mop.c
 mop.h
 perltidyrc
@@ -716,11 +713,8 @@ t/exceptions/class-mop-module.t
 t/exceptions/class-mop-object.t
 t/exceptions/class-mop-package.t
 t/exceptions/class.t
-t/exceptions/exception-attributeisrequired.t
+t/exceptions/cmop.t
 t/exceptions/exception-lazyattributeneedsadefault.t
-t/exceptions/exception-role-class.t
-t/exceptions/exception-role-role.t
-t/exceptions/exception-role-type.t
 t/exceptions/meta-role.t
 t/exceptions/metaclass.t
 t/exceptions/moose-exporter.t
@@ -760,6 +754,9 @@ t/exceptions/moose-util-typeconstraints.t
 t/exceptions/moose.t
 t/exceptions/object.t
 t/exceptions/overload.t
+t/exceptions/rt-92818.t
+t/exceptions/rt-94795.t
+t/exceptions/traits.t
 t/exceptions/typeconstraints.t
 t/exceptions/util.t
 t/immutable/apply_roles_to_immutable.t
@@ -861,14 +858,13 @@ t/recipes/basics_binarytree_attributefeatures.t
 t/recipes/basics_company_subtypes.t
 t/recipes/basics_datetime_extendingnonmooseparent.t
 t/recipes/basics_document_augmentandinner.t
-t/recipes/basics_geonome_overloadingsubtypesandcoercion.t
 t/recipes/basics_http_subtypesandcoercion.t
 t/recipes/basics_point_attributesandsubclassing.t
 t/recipes/extending_debugging_baseclassrole.t
 t/recipes/extending_mooseish_moosesugar.t
 t/recipes/legacy_debugging_baseclassreplacement.t
+t/recipes/legacy_labeled_attributemetaclass.t
 t/recipes/meta_globref_instancemetaclass.t
-t/recipes/meta_labeled_attributemetaclass.t
 t/recipes/meta_labeled_attributetrait.t
 t/recipes/meta_privateorpublic_methodmetaclass.t
 t/recipes/meta_table_metaclasstrait.t
@@ -930,7 +926,6 @@ t/test_moose/test_moose_does_ok.t
 t/test_moose/test_moose_has_attribute_ok.t
 t/test_moose/test_moose_meta_ok.t
 t/test_moose/with_immutable.t
-t/test_moose/with_immutable_tb2.t
 t/todo_tests/exception_reflects_failed_constraint.t
 t/todo_tests/immutable_n_around.t
 t/todo_tests/moose_and_threads.t
@@ -960,7 +955,6 @@ t/type_constraints/name_conflicts.t
 t/type_constraints/normalize_type_name.t
 t/type_constraints/parameterize_from.t
 t/type_constraints/role_type_constraint.t
-t/type_constraints/specio.t
 t/type_constraints/subtype_auto_vivify_parent.t
 t/type_constraints/subtyping_parameterized_types.t
 t/type_constraints/subtyping_union_types.t
@@ -979,6 +973,8 @@ t/type_constraints/util_type_coercion.t
 t/type_constraints/util_type_constraints.t
 t/type_constraints/util_type_constraints_export.t
 t/type_constraints/util_type_reloading.t
+t/type_constraints/with-specio.t
+t/zzz-check-breaks.t
 xs/Attribute.xs
 xs/AttributeCore.xs
 xs/Class.xs
@@ -993,10 +989,10 @@ xs/Moose.xs
 xs/Overload.xs
 xs/Package.xs
 xs/typemap
-xt/author/00-compile.t
 xt/author/debugger-duck_type.t
 xt/author/memory_leaks.t
 xt/author/test-my-dependents.t
+xt/release/00-compile.t
 xt/release/authority.t
 xt/release/cpan-changes.t
 xt/release/distmeta.t
@@ -5,7 +5,7 @@
       "Dave Rolsky <autarch@urth.org>",
       "Jesse Luehrs <doy@tozt.net>",
       "Shawn M Moore <code@sartak.org>",
-      "\u05d9\u05d5\u05d1\u05dc \u05e7\u05d5\u05d2'\u05de\u05df (Yuval Kogman) <nothingmuch@woobling.org>",
+      "יובל קוג'מן (Yuval Kogman) <nothingmuch@woobling.org>",
       "Karen Etheridge <ether@cpan.org>",
       "Florian Ragwitz <rafl@debian.org>",
       "Hans Dieter Pearcey <hdp@weftsoar.net>",
@@ -13,7 +13,7 @@
       "Matt S Trout <mst@shadowcat.co.uk>"
    ],
    "dynamic_config" : 0,
-   "generated_by" : "Dist::Zilla version 5.012, CPAN::Meta::Converter version 2.133380",
+   "generated_by" : "Dist::Zilla version 5.019, CPAN::Meta::Converter version 2.141520",
    "license" : [
       "perl_5"
    ],
@@ -56,27 +56,63 @@
          }
       },
       "develop" : {
-         "conflicts" : {
-            "Dist::Zilla::Plugin::Conflicts" : "== 0.11"
-         },
          "requires" : {
             "Algorithm::C3" : "0",
-            "CPAN::Meta::Requirements" : "0",
             "Class::Load" : "0.07",
-            "DBM::Deep" : "0",
+            "DBM::Deep" : "1.003",
             "Data::Visitor" : "0",
             "DateTime" : "0",
             "DateTime::Calendar::Mayan" : "0",
             "DateTime::Format::MySQL" : "0",
             "Declare::Constraints::Simple" : "0",
-            "Dist::Zilla" : "5.012",
+            "ExtUtils::MakeMaker::Dist::Zilla::Develop" : "0",
+            "File::Find::Rule" : "0",
+            "File::Spec" : "0",
+            "HTTP::Headers" : "0",
+            "IO::File" : "0",
+            "IO::Handle" : "0",
+            "IO::String" : "0",
+            "IPC::Open3" : "0",
+            "Locale::US" : "0",
+            "Module::CPANTS::Analyse" : "0.92",
+            "Module::Info" : "0",
+            "Module::Refresh" : "0",
+            "MooseX::NonMoose" : "0",
+            "PadWalker" : "0",
+            "Params::Coerce" : "0",
+            "Regexp::Common" : "0",
+            "SUPER" : "1.10",
+            "Specio" : "0.10",
+            "Test::CPAN::Changes" : "0.19",
+            "Test::CPAN::Meta" : "0",
+            "Test::Deep" : "0",
+            "Test::Inline" : "0",
+            "Test::Kwalitee" : "1.15",
+            "Test::LeakTrace" : "0",
+            "Test::Memory::Cycle" : "0",
+            "Test::More" : "0.94",
+            "Test::NoTabs" : "0",
+            "Test::Output" : "0",
+            "Test::Pod" : "1.41",
+            "Test::Pod::Coverage" : "1.04",
+            "Test::Spelling" : "0",
+            "URI" : "0",
+            "blib" : "0"
+         },
+         "suggests" : {
+            "Class::Load" : "0",
+            "Dist::Zilla" : "5",
             "Dist::Zilla::Plugin::Authority" : "0",
             "Dist::Zilla::Plugin::CheckChangesHasContent" : "0",
+            "Dist::Zilla::Plugin::CheckVersionIncrement" : "0",
             "Dist::Zilla::Plugin::ConfirmRelease" : "0",
-            "Dist::Zilla::Plugin::Conflicts" : "0",
+            "Dist::Zilla::Plugin::Conflicts" : "0.13001",
             "Dist::Zilla::Plugin::ContributorsFromGit" : "0",
             "Dist::Zilla::Plugin::EOLTests" : "0",
+            "Dist::Zilla::Plugin::EnsurePrereqsInstalled" : "0.003",
             "Dist::Zilla::Plugin::ExecDir" : "0",
+            "Dist::Zilla::Plugin::FileFinder::ByName" : "0",
+            "Dist::Zilla::Plugin::FileFinder::Filter" : "0",
             "Dist::Zilla::Plugin::GatherDir" : "0",
             "Dist::Zilla::Plugin::Git::Check" : "0",
             "Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch" : "0",
@@ -104,55 +140,24 @@
             "Dist::Zilla::Plugin::Prereqs::AuthorDeps" : "0",
             "Dist::Zilla::Plugin::PromptIfStale" : "0",
             "Dist::Zilla::Plugin::PruneCruft" : "0",
-            "Dist::Zilla::Plugin::PruneFiles" : "0",
             "Dist::Zilla::Plugin::RunExtraTests" : "0",
             "Dist::Zilla::Plugin::ShareDir" : "0",
             "Dist::Zilla::Plugin::SurgicalPodWeaver" : "0",
             "Dist::Zilla::Plugin::Test::CPAN::Changes" : "0",
+            "Dist::Zilla::Plugin::Test::CheckBreaks" : "0",
             "Dist::Zilla::Plugin::Test::Compile" : "2.037",
             "Dist::Zilla::Plugin::Test::Kwalitee" : "0",
             "Dist::Zilla::Plugin::Test::NoTabs" : "0",
             "Dist::Zilla::Plugin::Test::ReportPrereqs" : "0",
             "Dist::Zilla::Plugin::TestRelease" : "0",
             "Dist::Zilla::Plugin::UploadToCPAN" : "0",
-            "ExtUtils::MakeMaker::Dist::Zilla::Develop" : "0",
             "File::Find::Rule" : "0",
-            "File::Spec" : "0",
             "File::pushd" : "0",
-            "HTTP::Headers" : "0",
-            "IO::File" : "0",
-            "IO::Handle" : "0",
-            "IO::String" : "0",
-            "IPC::Open3" : "0",
             "IPC::System::Simple" : "0",
-            "Locale::US" : "0",
-            "Module::CPANTS::Analyse" : "0.92",
-            "Module::Info" : "0",
-            "Module::Refresh" : "0",
-            "MooseX::NonMoose" : "0",
-            "PadWalker" : "0",
-            "Params::Coerce" : "0",
             "Path::Tiny" : "0",
             "Pod::Elemental::PerlMunger" : "0.200001",
-            "Regexp::Common" : "0",
-            "SUPER" : "0",
-            "Specio" : "0.07",
-            "Test::CPAN::Changes" : "0.19",
-            "Test::CPAN::Meta" : "0",
-            "Test::Deep" : "0",
-            "Test::DependentModules" : "0.13",
             "Test::Inline" : "0",
-            "Test::Inline::Extract" : "0",
-            "Test::Kwalitee" : "1.15",
-            "Test::LeakTrace" : "0",
-            "Test::Memory::Cycle" : "0",
-            "Test::More" : "0.94",
-            "Test::NoTabs" : "0",
-            "Test::Output" : "0",
-            "Test::Pod" : "1.41",
-            "Test::Spelling" : "0",
-            "URI" : "0",
-            "blib" : "0"
+            "Test::Inline::Extract" : "0"
          }
       },
       "runtime" : {
@@ -190,6 +195,8 @@
             "CPAN::Meta::Requirements" : "2.120900"
          },
          "requires" : {
+            "CPAN::Meta::Check" : "0.007",
+            "CPAN::Meta::Requirements" : "0",
             "Test::Fatal" : "0.001",
             "Test::More" : "0.88",
             "Test::Requires" : "0.05"
@@ -199,1359 +206,1355 @@
    "provides" : {
       "Class::MOP" : {
          "file" : "lib/Class/MOP.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Class::MOP::Attribute" : {
          "file" : "lib/Class/MOP/Attribute.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Class::MOP::Class" : {
          "file" : "lib/Class/MOP/Class.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Class::MOP::Instance" : {
          "file" : "lib/Class/MOP/Instance.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Class::MOP::Method" : {
          "file" : "lib/Class/MOP/Method.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Class::MOP::Method::Accessor" : {
          "file" : "lib/Class/MOP/Method/Accessor.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Class::MOP::Method::Constructor" : {
          "file" : "lib/Class/MOP/Method/Constructor.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Class::MOP::Method::Generated" : {
          "file" : "lib/Class/MOP/Method/Generated.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Class::MOP::Method::Inlined" : {
          "file" : "lib/Class/MOP/Method/Inlined.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Class::MOP::Method::Meta" : {
          "file" : "lib/Class/MOP/Method/Meta.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Class::MOP::Method::Overload" : {
          "file" : "lib/Class/MOP/Method/Overload.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Class::MOP::Method::Wrapped" : {
          "file" : "lib/Class/MOP/Method/Wrapped.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Class::MOP::Module" : {
          "file" : "lib/Class/MOP/Module.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Class::MOP::Object" : {
          "file" : "lib/Class/MOP/Object.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Class::MOP::Package" : {
          "file" : "lib/Class/MOP/Package.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose" : {
          "file" : "lib/Moose.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Cookbook" : {
          "file" : "lib/Moose/Cookbook.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Cookbook::Basics::BankAccount_MethodModifiersAndSubclassing" : {
          "file" : "lib/Moose/Cookbook/Basics/BankAccount_MethodModifiersAndSubclassing.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Cookbook::Basics::BinaryTree_AttributeFeatures" : {
          "file" : "lib/Moose/Cookbook/Basics/BinaryTree_AttributeFeatures.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Cookbook::Basics::BinaryTree_BuilderAndLazyBuild" : {
          "file" : "lib/Moose/Cookbook/Basics/BinaryTree_BuilderAndLazyBuild.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Cookbook::Basics::Company_Subtypes" : {
          "file" : "lib/Moose/Cookbook/Basics/Company_Subtypes.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Cookbook::Basics::DateTime_ExtendingNonMooseParent" : {
          "file" : "lib/Moose/Cookbook/Basics/DateTime_ExtendingNonMooseParent.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Cookbook::Basics::Document_AugmentAndInner" : {
          "file" : "lib/Moose/Cookbook/Basics/Document_AugmentAndInner.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Cookbook::Basics::Genome_OverloadingSubtypesAndCoercion" : {
          "file" : "lib/Moose/Cookbook/Basics/Genome_OverloadingSubtypesAndCoercion.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Cookbook::Basics::HTTP_SubtypesAndCoercion" : {
          "file" : "lib/Moose/Cookbook/Basics/HTTP_SubtypesAndCoercion.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Cookbook::Basics::Immutable" : {
          "file" : "lib/Moose/Cookbook/Basics/Immutable.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Cookbook::Basics::Person_BUILDARGSAndBUILD" : {
          "file" : "lib/Moose/Cookbook/Basics/Person_BUILDARGSAndBUILD.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Cookbook::Basics::Point_AttributesAndSubclassing" : {
          "file" : "lib/Moose/Cookbook/Basics/Point_AttributesAndSubclassing.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Cookbook::Extending::Debugging_BaseClassRole" : {
          "file" : "lib/Moose/Cookbook/Extending/Debugging_BaseClassRole.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Cookbook::Extending::ExtensionOverview" : {
          "file" : "lib/Moose/Cookbook/Extending/ExtensionOverview.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Cookbook::Extending::Mooseish_MooseSugar" : {
          "file" : "lib/Moose/Cookbook/Extending/Mooseish_MooseSugar.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Cookbook::Legacy::Debugging_BaseClassReplacement" : {
          "file" : "lib/Moose/Cookbook/Legacy/Debugging_BaseClassReplacement.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
+      },
+      "Moose::Cookbook::Legacy::Labeled_AttributeMetaclass" : {
+         "file" : "lib/Moose/Cookbook/Legacy/Labeled_AttributeMetaclass.pod",
+         "version" : "2.1210"
+      },
+      "Moose::Cookbook::Legacy::Table_ClassMetaclass" : {
+         "file" : "lib/Moose/Cookbook/Legacy/Table_ClassMetaclass.pod",
+         "version" : "2.1210"
       },
       "Moose::Cookbook::Meta::GlobRef_InstanceMetaclass" : {
          "file" : "lib/Moose/Cookbook/Meta/GlobRef_InstanceMetaclass.pod",
-         "version" : "2.1204"
-      },
-      "Moose::Cookbook::Meta::Labeled_AttributeMetaclass" : {
-         "file" : "lib/Moose/Cookbook/Legacy/Labeled_AttributeMetaclass.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Cookbook::Meta::Labeled_AttributeTrait" : {
          "file" : "lib/Moose/Cookbook/Meta/Labeled_AttributeTrait.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Cookbook::Meta::PrivateOrPublic_MethodMetaclass" : {
          "file" : "lib/Moose/Cookbook/Meta/PrivateOrPublic_MethodMetaclass.pod",
-         "version" : "2.1204"
-      },
-      "Moose::Cookbook::Meta::Table_ClassMetaclass" : {
-         "file" : "lib/Moose/Cookbook/Legacy/Table_ClassMetaclass.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Cookbook::Meta::Table_MetaclassTrait" : {
          "file" : "lib/Moose/Cookbook/Meta/Table_MetaclassTrait.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Cookbook::Meta::WhyMeta" : {
          "file" : "lib/Moose/Cookbook/Meta/WhyMeta.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Cookbook::Roles::ApplicationToInstance" : {
          "file" : "lib/Moose/Cookbook/Roles/ApplicationToInstance.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Cookbook::Roles::Comparable_CodeReuse" : {
          "file" : "lib/Moose/Cookbook/Roles/Comparable_CodeReuse.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Cookbook::Roles::Restartable_AdvancedComposition" : {
          "file" : "lib/Moose/Cookbook/Roles/Restartable_AdvancedComposition.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Cookbook::Snack::Keywords" : {
          "file" : "lib/Moose/Cookbook/Snack/Keywords.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Cookbook::Snack::Types" : {
          "file" : "lib/Moose/Cookbook/Snack/Types.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Cookbook::Style" : {
          "file" : "lib/Moose/Cookbook/Style.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception" : {
          "file" : "lib/Moose/Exception.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::AccessorMustReadWrite" : {
          "file" : "lib/Moose/Exception/AccessorMustReadWrite.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::AddParameterizableTypeTakesParameterizableType" : {
          "file" : "lib/Moose/Exception/AddParameterizableTypeTakesParameterizableType.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::AddRoleTakesAMooseMetaRoleInstance" : {
          "file" : "lib/Moose/Exception/AddRoleTakesAMooseMetaRoleInstance.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::AddRoleToARoleTakesAMooseMetaRole" : {
          "file" : "lib/Moose/Exception/AddRoleToARoleTakesAMooseMetaRole.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::ApplyTakesABlessedInstance" : {
          "file" : "lib/Moose/Exception/ApplyTakesABlessedInstance.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::AttachToClassNeedsAClassMOPClassInstanceOrASubclass" : {
          "file" : "lib/Moose/Exception/AttachToClassNeedsAClassMOPClassInstanceOrASubclass.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::AttributeConflictInRoles" : {
          "file" : "lib/Moose/Exception/AttributeConflictInRoles.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::AttributeConflictInSummation" : {
          "file" : "lib/Moose/Exception/AttributeConflictInSummation.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::AttributeExtensionIsNotSupportedInRoles" : {
          "file" : "lib/Moose/Exception/AttributeExtensionIsNotSupportedInRoles.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::AttributeIsRequired" : {
          "file" : "lib/Moose/Exception/AttributeIsRequired.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::AttributeMustBeAnClassMOPMixinAttributeCoreOrSubclass" : {
          "file" : "lib/Moose/Exception/AttributeMustBeAnClassMOPMixinAttributeCoreOrSubclass.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::AttributeNamesDoNotMatch" : {
          "file" : "lib/Moose/Exception/AttributeNamesDoNotMatch.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::AttributeValueIsNotAnObject" : {
          "file" : "lib/Moose/Exception/AttributeValueIsNotAnObject.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::AttributeValueIsNotDefined" : {
          "file" : "lib/Moose/Exception/AttributeValueIsNotDefined.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::AutoDeRefNeedsArrayRefOrHashRef" : {
          "file" : "lib/Moose/Exception/AutoDeRefNeedsArrayRefOrHashRef.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::BadOptionFormat" : {
          "file" : "lib/Moose/Exception/BadOptionFormat.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::BothBuilderAndDefaultAreNotAllowed" : {
          "file" : "lib/Moose/Exception/BothBuilderAndDefaultAreNotAllowed.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::BuilderDoesNotExist" : {
          "file" : "lib/Moose/Exception/BuilderDoesNotExist.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::BuilderMethodNotSupportedForAttribute" : {
          "file" : "lib/Moose/Exception/BuilderMethodNotSupportedForAttribute.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::BuilderMethodNotSupportedForInlineAttribute" : {
          "file" : "lib/Moose/Exception/BuilderMethodNotSupportedForInlineAttribute.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::BuilderMustBeAMethodName" : {
          "file" : "lib/Moose/Exception/BuilderMustBeAMethodName.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CallingMethodOnAnImmutableInstance" : {
          "file" : "lib/Moose/Exception/CallingMethodOnAnImmutableInstance.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CallingReadOnlyMethodOnAnImmutableInstance" : {
          "file" : "lib/Moose/Exception/CallingReadOnlyMethodOnAnImmutableInstance.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CanExtendOnlyClasses" : {
          "file" : "lib/Moose/Exception/CanExtendOnlyClasses.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CanOnlyConsumeRole" : {
          "file" : "lib/Moose/Exception/CanOnlyConsumeRole.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CanOnlyWrapBlessedCode" : {
          "file" : "lib/Moose/Exception/CanOnlyWrapBlessedCode.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CanReblessOnlyIntoASubclass" : {
          "file" : "lib/Moose/Exception/CanReblessOnlyIntoASubclass.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CanReblessOnlyIntoASuperclass" : {
          "file" : "lib/Moose/Exception/CanReblessOnlyIntoASuperclass.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotAddAdditionalTypeCoercionsToUnion" : {
          "file" : "lib/Moose/Exception/CannotAddAdditionalTypeCoercionsToUnion.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotAddAsAnAttributeToARole" : {
          "file" : "lib/Moose/Exception/CannotAddAsAnAttributeToARole.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotApplyBaseClassRolesToRole" : {
          "file" : "lib/Moose/Exception/CannotApplyBaseClassRolesToRole.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotAssignValueToReadOnlyAccessor" : {
          "file" : "lib/Moose/Exception/CannotAssignValueToReadOnlyAccessor.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotAugmentIfLocalMethodPresent" : {
          "file" : "lib/Moose/Exception/CannotAugmentIfLocalMethodPresent.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotAugmentNoSuperMethod" : {
          "file" : "lib/Moose/Exception/CannotAugmentNoSuperMethod.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotAutoDerefWithoutIsa" : {
          "file" : "lib/Moose/Exception/CannotAutoDerefWithoutIsa.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotAutoDereferenceTypeConstraint" : {
          "file" : "lib/Moose/Exception/CannotAutoDereferenceTypeConstraint.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotCalculateNativeType" : {
          "file" : "lib/Moose/Exception/CannotCalculateNativeType.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotCallAnAbstractBaseMethod" : {
          "file" : "lib/Moose/Exception/CannotCallAnAbstractBaseMethod.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotCallAnAbstractMethod" : {
          "file" : "lib/Moose/Exception/CannotCallAnAbstractMethod.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotCoerceAWeakRef" : {
          "file" : "lib/Moose/Exception/CannotCoerceAWeakRef.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotCoerceAttributeWhichHasNoCoercion" : {
          "file" : "lib/Moose/Exception/CannotCoerceAttributeWhichHasNoCoercion.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotCreateHigherOrderTypeWithoutATypeParameter" : {
          "file" : "lib/Moose/Exception/CannotCreateHigherOrderTypeWithoutATypeParameter.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresent" : {
          "file" : "lib/Moose/Exception/CannotCreateMethodAliasLocalMethodIsPresent.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresentInClass" : {
          "file" : "lib/Moose/Exception/CannotCreateMethodAliasLocalMethodIsPresentInClass.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotDelegateLocalMethodIsPresent" : {
          "file" : "lib/Moose/Exception/CannotDelegateLocalMethodIsPresent.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotDelegateWithoutIsa" : {
          "file" : "lib/Moose/Exception/CannotDelegateWithoutIsa.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotFindDelegateMetaclass" : {
          "file" : "lib/Moose/Exception/CannotFindDelegateMetaclass.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotFindType" : {
          "file" : "lib/Moose/Exception/CannotFindType.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotFindTypeGivenToMatchOnType" : {
          "file" : "lib/Moose/Exception/CannotFindTypeGivenToMatchOnType.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotFixMetaclassCompatibility" : {
          "file" : "lib/Moose/Exception/CannotFixMetaclassCompatibility.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotGenerateInlineConstraint" : {
          "file" : "lib/Moose/Exception/CannotGenerateInlineConstraint.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotInitializeMooseMetaRoleComposite" : {
          "file" : "lib/Moose/Exception/CannotInitializeMooseMetaRoleComposite.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotInlineTypeConstraintCheck" : {
          "file" : "lib/Moose/Exception/CannotInlineTypeConstraintCheck.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotLocatePackageInINC" : {
          "file" : "lib/Moose/Exception/CannotLocatePackageInINC.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotMakeMetaclassCompatible" : {
          "file" : "lib/Moose/Exception/CannotMakeMetaclassCompatible.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotOverrideALocalMethod" : {
          "file" : "lib/Moose/Exception/CannotOverrideALocalMethod.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotOverrideBodyOfMetaMethods" : {
          "file" : "lib/Moose/Exception/CannotOverrideBodyOfMetaMethods.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotOverrideLocalMethodIsPresent" : {
          "file" : "lib/Moose/Exception/CannotOverrideLocalMethodIsPresent.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotOverrideNoSuperMethod" : {
          "file" : "lib/Moose/Exception/CannotOverrideNoSuperMethod.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotRegisterUnnamedTypeConstraint" : {
          "file" : "lib/Moose/Exception/CannotRegisterUnnamedTypeConstraint.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CannotUseLazyBuildAndDefaultSimultaneously" : {
          "file" : "lib/Moose/Exception/CannotUseLazyBuildAndDefaultSimultaneously.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CircularReferenceInAlso" : {
          "file" : "lib/Moose/Exception/CircularReferenceInAlso.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::ClassDoesNotHaveInitMeta" : {
          "file" : "lib/Moose/Exception/ClassDoesNotHaveInitMeta.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::ClassDoesTheExcludedRole" : {
          "file" : "lib/Moose/Exception/ClassDoesTheExcludedRole.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::ClassNamesDoNotMatch" : {
          "file" : "lib/Moose/Exception/ClassNamesDoNotMatch.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CloneObjectExpectsAnInstanceOfMetaclass" : {
          "file" : "lib/Moose/Exception/CloneObjectExpectsAnInstanceOfMetaclass.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CodeBlockMustBeACodeRef" : {
          "file" : "lib/Moose/Exception/CodeBlockMustBeACodeRef.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CoercingWithoutCoercions" : {
          "file" : "lib/Moose/Exception/CoercingWithoutCoercions.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CoercionAlreadyExists" : {
          "file" : "lib/Moose/Exception/CoercionAlreadyExists.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CoercionNeedsTypeConstraint" : {
          "file" : "lib/Moose/Exception/CoercionNeedsTypeConstraint.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::ConflictDetectedInCheckRoleExclusions" : {
          "file" : "lib/Moose/Exception/ConflictDetectedInCheckRoleExclusions.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::ConflictDetectedInCheckRoleExclusionsInToClass" : {
          "file" : "lib/Moose/Exception/ConflictDetectedInCheckRoleExclusionsInToClass.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::ConstructClassInstanceTakesPackageName" : {
          "file" : "lib/Moose/Exception/ConstructClassInstanceTakesPackageName.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CouldNotCreateMethod" : {
          "file" : "lib/Moose/Exception/CouldNotCreateMethod.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CouldNotCreateWriter" : {
          "file" : "lib/Moose/Exception/CouldNotCreateWriter.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CouldNotEvalConstructor" : {
          "file" : "lib/Moose/Exception/CouldNotEvalConstructor.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CouldNotEvalDestructor" : {
          "file" : "lib/Moose/Exception/CouldNotEvalDestructor.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CouldNotFindTypeConstraintToCoerceFrom" : {
          "file" : "lib/Moose/Exception/CouldNotFindTypeConstraintToCoerceFrom.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CouldNotGenerateInlineAttributeMethod" : {
          "file" : "lib/Moose/Exception/CouldNotGenerateInlineAttributeMethod.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CouldNotLocateTypeConstraintForUnion" : {
          "file" : "lib/Moose/Exception/CouldNotLocateTypeConstraintForUnion.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CouldNotParseType" : {
          "file" : "lib/Moose/Exception/CouldNotParseType.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CreateMOPClassTakesArrayRefOfAttributes" : {
          "file" : "lib/Moose/Exception/CreateMOPClassTakesArrayRefOfAttributes.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CreateMOPClassTakesArrayRefOfSuperclasses" : {
          "file" : "lib/Moose/Exception/CreateMOPClassTakesArrayRefOfSuperclasses.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CreateMOPClassTakesHashRefOfMethods" : {
          "file" : "lib/Moose/Exception/CreateMOPClassTakesHashRefOfMethods.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CreateTakesArrayRefOfRoles" : {
          "file" : "lib/Moose/Exception/CreateTakesArrayRefOfRoles.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CreateTakesHashRefOfAttributes" : {
          "file" : "lib/Moose/Exception/CreateTakesHashRefOfAttributes.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::CreateTakesHashRefOfMethods" : {
          "file" : "lib/Moose/Exception/CreateTakesHashRefOfMethods.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::DefaultToMatchOnTypeMustBeCodeRef" : {
          "file" : "lib/Moose/Exception/DefaultToMatchOnTypeMustBeCodeRef.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::DelegationToAClassWhichIsNotLoaded" : {
          "file" : "lib/Moose/Exception/DelegationToAClassWhichIsNotLoaded.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::DelegationToARoleWhichIsNotLoaded" : {
          "file" : "lib/Moose/Exception/DelegationToARoleWhichIsNotLoaded.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::DelegationToATypeWhichIsNotAClass" : {
          "file" : "lib/Moose/Exception/DelegationToATypeWhichIsNotAClass.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::DoesRequiresRoleName" : {
          "file" : "lib/Moose/Exception/DoesRequiresRoleName.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::EnumCalledWithAnArrayRefAndAdditionalArgs" : {
          "file" : "lib/Moose/Exception/EnumCalledWithAnArrayRefAndAdditionalArgs.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::EnumValuesMustBeString" : {
          "file" : "lib/Moose/Exception/EnumValuesMustBeString.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::ExtendsMissingArgs" : {
          "file" : "lib/Moose/Exception/ExtendsMissingArgs.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::HandlesMustBeAHashRef" : {
          "file" : "lib/Moose/Exception/HandlesMustBeAHashRef.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::IllegalInheritedOptions" : {
          "file" : "lib/Moose/Exception/IllegalInheritedOptions.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::IllegalMethodTypeToAddMethodModifier" : {
          "file" : "lib/Moose/Exception/IllegalMethodTypeToAddMethodModifier.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::IncompatibleMetaclassOfSuperclass" : {
          "file" : "lib/Moose/Exception/IncompatibleMetaclassOfSuperclass.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::InitMetaRequiresClass" : {
          "file" : "lib/Moose/Exception/InitMetaRequiresClass.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::InitializeTakesUnBlessedPackageName" : {
          "file" : "lib/Moose/Exception/InitializeTakesUnBlessedPackageName.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::InstanceBlessedIntoWrongClass" : {
          "file" : "lib/Moose/Exception/InstanceBlessedIntoWrongClass.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::InstanceMustBeABlessedReference" : {
          "file" : "lib/Moose/Exception/InstanceMustBeABlessedReference.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::InvalidArgPassedToMooseUtilMetaRole" : {
          "file" : "lib/Moose/Exception/InvalidArgPassedToMooseUtilMetaRole.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::InvalidArgumentToMethod" : {
          "file" : "lib/Moose/Exception/InvalidArgumentToMethod.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::InvalidArgumentsToTraitAliases" : {
          "file" : "lib/Moose/Exception/InvalidArgumentsToTraitAliases.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::InvalidBaseTypeGivenToCreateParameterizedTypeConstraint" : {
          "file" : "lib/Moose/Exception/InvalidBaseTypeGivenToCreateParameterizedTypeConstraint.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::InvalidHandleValue" : {
          "file" : "lib/Moose/Exception/InvalidHandleValue.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::InvalidHasProvidedInARole" : {
          "file" : "lib/Moose/Exception/InvalidHasProvidedInARole.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::InvalidNameForType" : {
          "file" : "lib/Moose/Exception/InvalidNameForType.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::InvalidRoleApplication" : {
          "file" : "lib/Moose/Exception/InvalidRoleApplication.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::InvalidTypeConstraint" : {
          "file" : "lib/Moose/Exception/InvalidTypeConstraint.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::InvalidTypeGivenToCreateParameterizedTypeConstraint" : {
          "file" : "lib/Moose/Exception/InvalidTypeGivenToCreateParameterizedTypeConstraint.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::InvalidValueForIs" : {
          "file" : "lib/Moose/Exception/InvalidValueForIs.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::IsaDoesNotDoTheRole" : {
          "file" : "lib/Moose/Exception/IsaDoesNotDoTheRole.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::IsaLacksDoesMethod" : {
          "file" : "lib/Moose/Exception/IsaLacksDoesMethod.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::LazyAttributeNeedsADefault" : {
          "file" : "lib/Moose/Exception/LazyAttributeNeedsADefault.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::Legacy" : {
          "file" : "lib/Moose/Exception/Legacy.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MOPAttributeNewNeedsAttributeName" : {
          "file" : "lib/Moose/Exception/MOPAttributeNewNeedsAttributeName.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MatchActionMustBeACodeRef" : {
          "file" : "lib/Moose/Exception/MatchActionMustBeACodeRef.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MessageParameterMustBeCodeRef" : {
          "file" : "lib/Moose/Exception/MessageParameterMustBeCodeRef.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MetaclassIsAClassNotASubclassOfGivenMetaclass" : {
          "file" : "lib/Moose/Exception/MetaclassIsAClassNotASubclassOfGivenMetaclass.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MetaclassIsARoleNotASubclassOfGivenMetaclass" : {
          "file" : "lib/Moose/Exception/MetaclassIsARoleNotASubclassOfGivenMetaclass.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MetaclassIsNotASubclassOfGivenMetaclass" : {
          "file" : "lib/Moose/Exception/MetaclassIsNotASubclassOfGivenMetaclass.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MetaclassMustBeASubclassOfMooseMetaClass" : {
          "file" : "lib/Moose/Exception/MetaclassMustBeASubclassOfMooseMetaClass.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MetaclassMustBeASubclassOfMooseMetaRole" : {
          "file" : "lib/Moose/Exception/MetaclassMustBeASubclassOfMooseMetaRole.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MetaclassMustBeDerivedFromClassMOPClass" : {
          "file" : "lib/Moose/Exception/MetaclassMustBeDerivedFromClassMOPClass.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MetaclassNotLoaded" : {
          "file" : "lib/Moose/Exception/MetaclassNotLoaded.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MetaclassTypeIncompatible" : {
          "file" : "lib/Moose/Exception/MetaclassTypeIncompatible.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MethodExpectedAMetaclassObject" : {
          "file" : "lib/Moose/Exception/MethodExpectedAMetaclassObject.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MethodExpectsFewerArgs" : {
          "file" : "lib/Moose/Exception/MethodExpectsFewerArgs.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MethodExpectsMoreArgs" : {
          "file" : "lib/Moose/Exception/MethodExpectsMoreArgs.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MethodModifierNeedsMethodName" : {
          "file" : "lib/Moose/Exception/MethodModifierNeedsMethodName.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MethodNameConflictInRoles" : {
          "file" : "lib/Moose/Exception/MethodNameConflictInRoles.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MethodNameNotFoundInInheritanceHierarchy" : {
          "file" : "lib/Moose/Exception/MethodNameNotFoundInInheritanceHierarchy.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MethodNameNotGiven" : {
          "file" : "lib/Moose/Exception/MethodNameNotGiven.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MustDefineAMethodName" : {
          "file" : "lib/Moose/Exception/MustDefineAMethodName.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MustDefineAnAttributeName" : {
          "file" : "lib/Moose/Exception/MustDefineAnAttributeName.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MustHaveAtLeastOneValueToEnumerate" : {
          "file" : "lib/Moose/Exception/MustHaveAtLeastOneValueToEnumerate.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MustPassAHashOfOptions" : {
          "file" : "lib/Moose/Exception/MustPassAHashOfOptions.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MustPassAMooseMetaRoleInstanceOrSubclass" : {
          "file" : "lib/Moose/Exception/MustPassAMooseMetaRoleInstanceOrSubclass.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MustPassAPackageNameOrAnExistingClassMOPPackageInstance" : {
          "file" : "lib/Moose/Exception/MustPassAPackageNameOrAnExistingClassMOPPackageInstance.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MustPassEvenNumberOfArguments" : {
          "file" : "lib/Moose/Exception/MustPassEvenNumberOfArguments.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MustPassEvenNumberOfAttributeOptions" : {
          "file" : "lib/Moose/Exception/MustPassEvenNumberOfAttributeOptions.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MustProvideANameForTheAttribute" : {
          "file" : "lib/Moose/Exception/MustProvideANameForTheAttribute.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MustSpecifyAtleastOneMethod" : {
          "file" : "lib/Moose/Exception/MustSpecifyAtleastOneMethod.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MustSpecifyAtleastOneRole" : {
          "file" : "lib/Moose/Exception/MustSpecifyAtleastOneRole.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MustSpecifyAtleastOneRoleToApplicant" : {
          "file" : "lib/Moose/Exception/MustSpecifyAtleastOneRoleToApplicant.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MustSupplyAClassMOPAttributeInstance" : {
          "file" : "lib/Moose/Exception/MustSupplyAClassMOPAttributeInstance.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MustSupplyADelegateToMethod" : {
          "file" : "lib/Moose/Exception/MustSupplyADelegateToMethod.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MustSupplyAMetaclass" : {
          "file" : "lib/Moose/Exception/MustSupplyAMetaclass.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MustSupplyAMooseMetaAttributeInstance" : {
          "file" : "lib/Moose/Exception/MustSupplyAMooseMetaAttributeInstance.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MustSupplyAnAccessorTypeToConstructWith" : {
          "file" : "lib/Moose/Exception/MustSupplyAnAccessorTypeToConstructWith.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MustSupplyAnAttributeToConstructWith" : {
          "file" : "lib/Moose/Exception/MustSupplyAnAttributeToConstructWith.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MustSupplyArrayRefAsCurriedArguments" : {
          "file" : "lib/Moose/Exception/MustSupplyArrayRefAsCurriedArguments.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::MustSupplyPackageNameAndName" : {
          "file" : "lib/Moose/Exception/MustSupplyPackageNameAndName.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::NeedsTypeConstraintUnionForTypeCoercionUnion" : {
          "file" : "lib/Moose/Exception/NeedsTypeConstraintUnionForTypeCoercionUnion.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::NeitherAttributeNorAttributeNameIsGiven" : {
          "file" : "lib/Moose/Exception/NeitherAttributeNorAttributeNameIsGiven.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::NeitherClassNorClassNameIsGiven" : {
          "file" : "lib/Moose/Exception/NeitherClassNorClassNameIsGiven.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::NeitherRoleNorRoleNameIsGiven" : {
          "file" : "lib/Moose/Exception/NeitherRoleNorRoleNameIsGiven.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::NeitherTypeNorTypeNameIsGiven" : {
          "file" : "lib/Moose/Exception/NeitherTypeNorTypeNameIsGiven.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::NoAttributeFoundInSuperClass" : {
          "file" : "lib/Moose/Exception/NoAttributeFoundInSuperClass.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::NoBodyToInitializeInAnAbstractBaseClass" : {
          "file" : "lib/Moose/Exception/NoBodyToInitializeInAnAbstractBaseClass.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::NoCasesMatched" : {
          "file" : "lib/Moose/Exception/NoCasesMatched.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::NoConstraintCheckForTypeConstraint" : {
          "file" : "lib/Moose/Exception/NoConstraintCheckForTypeConstraint.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::NoDestructorClassSpecified" : {
          "file" : "lib/Moose/Exception/NoDestructorClassSpecified.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::NoImmutableTraitSpecifiedForClass" : {
          "file" : "lib/Moose/Exception/NoImmutableTraitSpecifiedForClass.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::NoParentGivenToSubtype" : {
          "file" : "lib/Moose/Exception/NoParentGivenToSubtype.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::OnlyInstancesCanBeCloned" : {
          "file" : "lib/Moose/Exception/OnlyInstancesCanBeCloned.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::OperatorIsRequired" : {
          "file" : "lib/Moose/Exception/OperatorIsRequired.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::OverrideConflictInComposition" : {
          "file" : "lib/Moose/Exception/OverrideConflictInComposition.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::OverrideConflictInSummation" : {
          "file" : "lib/Moose/Exception/OverrideConflictInSummation.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::PackageDoesNotUseMooseExporter" : {
          "file" : "lib/Moose/Exception/PackageDoesNotUseMooseExporter.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::PackageNameAndNameParamsNotGivenToWrap" : {
          "file" : "lib/Moose/Exception/PackageNameAndNameParamsNotGivenToWrap.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::PackagesAndModulesAreNotCachable" : {
          "file" : "lib/Moose/Exception/PackagesAndModulesAreNotCachable.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::ParameterIsNotSubtypeOfParent" : {
          "file" : "lib/Moose/Exception/ParameterIsNotSubtypeOfParent.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::ReferencesAreNotAllowedAsDefault" : {
          "file" : "lib/Moose/Exception/ReferencesAreNotAllowedAsDefault.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::RequiredAttributeLacksInitialization" : {
          "file" : "lib/Moose/Exception/RequiredAttributeLacksInitialization.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::RequiredAttributeNeedsADefault" : {
          "file" : "lib/Moose/Exception/RequiredAttributeNeedsADefault.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::RequiredMethodsImportedByClass" : {
          "file" : "lib/Moose/Exception/RequiredMethodsImportedByClass.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::RequiredMethodsNotImplementedByClass" : {
          "file" : "lib/Moose/Exception/RequiredMethodsNotImplementedByClass.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::Role::Attribute" : {
          "file" : "lib/Moose/Exception/Role/Attribute.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::Role::AttributeName" : {
          "file" : "lib/Moose/Exception/Role/AttributeName.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::Role::Class" : {
          "file" : "lib/Moose/Exception/Role/Class.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::Role::EitherAttributeOrAttributeName" : {
          "file" : "lib/Moose/Exception/Role/EitherAttributeOrAttributeName.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::Role::Instance" : {
          "file" : "lib/Moose/Exception/Role/Instance.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
+      },
+      "Moose::Exception::Role::InstanceClass" : {
+         "file" : "lib/Moose/Exception/Role/InstanceClass.pm",
+         "version" : "2.1210"
       },
       "Moose::Exception::Role::InvalidAttributeOptions" : {
          "file" : "lib/Moose/Exception/Role/InvalidAttributeOptions.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::Role::Method" : {
          "file" : "lib/Moose/Exception/Role/Method.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::Role::ParamsHash" : {
          "file" : "lib/Moose/Exception/Role/ParamsHash.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::Role::Role" : {
          "file" : "lib/Moose/Exception/Role/Role.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::Role::RoleForCreate" : {
          "file" : "lib/Moose/Exception/Role/RoleForCreate.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::Role::RoleForCreateMOPClass" : {
          "file" : "lib/Moose/Exception/Role/RoleForCreateMOPClass.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::Role::TypeConstraint" : {
          "file" : "lib/Moose/Exception/Role/TypeConstraint.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::RoleDoesTheExcludedRole" : {
          "file" : "lib/Moose/Exception/RoleDoesTheExcludedRole.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::RoleExclusionConflict" : {
          "file" : "lib/Moose/Exception/RoleExclusionConflict.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::RoleNameRequired" : {
          "file" : "lib/Moose/Exception/RoleNameRequired.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::RoleNameRequiredForMooseMetaRole" : {
          "file" : "lib/Moose/Exception/RoleNameRequiredForMooseMetaRole.pm",
-         "version" : "2.1204"
-      },
-      "Moose::Exception::RoleNamesDoNotMatch" : {
-         "file" : "lib/Moose/Exception/RoleNamesDoNotMatch.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::RolesDoNotSupportAugment" : {
          "file" : "lib/Moose/Exception/RolesDoNotSupportAugment.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::RolesDoNotSupportExtends" : {
          "file" : "lib/Moose/Exception/RolesDoNotSupportExtends.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::RolesDoNotSupportInner" : {
          "file" : "lib/Moose/Exception/RolesDoNotSupportInner.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::RolesDoNotSupportRegexReferencesForMethodModifiers" : {
          "file" : "lib/Moose/Exception/RolesDoNotSupportRegexReferencesForMethodModifiers.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::RolesInCreateTakesAnArrayRef" : {
          "file" : "lib/Moose/Exception/RolesInCreateTakesAnArrayRef.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::RolesListMustBeInstancesOfMooseMetaRole" : {
          "file" : "lib/Moose/Exception/RolesListMustBeInstancesOfMooseMetaRole.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::SingleParamsToNewMustBeHashRef" : {
          "file" : "lib/Moose/Exception/SingleParamsToNewMustBeHashRef.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::TriggerMustBeACodeRef" : {
          "file" : "lib/Moose/Exception/TriggerMustBeACodeRef.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::TypeConstraintCannotBeUsedForAParameterizableType" : {
          "file" : "lib/Moose/Exception/TypeConstraintCannotBeUsedForAParameterizableType.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::TypeConstraintIsAlreadyCreated" : {
          "file" : "lib/Moose/Exception/TypeConstraintIsAlreadyCreated.pm",
-         "version" : "2.1204"
-      },
-      "Moose::Exception::TypeNamesDoNotMatch" : {
-         "file" : "lib/Moose/Exception/TypeNamesDoNotMatch.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::TypeParameterMustBeMooseMetaType" : {
          "file" : "lib/Moose/Exception/TypeParameterMustBeMooseMetaType.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::UnableToCanonicalizeHandles" : {
          "file" : "lib/Moose/Exception/UnableToCanonicalizeHandles.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::UnableToCanonicalizeNonRolePackage" : {
          "file" : "lib/Moose/Exception/UnableToCanonicalizeNonRolePackage.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::UnableToRecognizeDelegateMetaclass" : {
          "file" : "lib/Moose/Exception/UnableToRecognizeDelegateMetaclass.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::UndefinedHashKeysPassedToMethod" : {
          "file" : "lib/Moose/Exception/UndefinedHashKeysPassedToMethod.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::UnionCalledWithAnArrayRefAndAdditionalArgs" : {
          "file" : "lib/Moose/Exception/UnionCalledWithAnArrayRefAndAdditionalArgs.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::UnionTakesAtleastTwoTypeNames" : {
          "file" : "lib/Moose/Exception/UnionTakesAtleastTwoTypeNames.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::ValidationFailedForInlineTypeConstraint" : {
          "file" : "lib/Moose/Exception/ValidationFailedForInlineTypeConstraint.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::ValidationFailedForTypeConstraint" : {
          "file" : "lib/Moose/Exception/ValidationFailedForTypeConstraint.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::WrapTakesACodeRefToBless" : {
          "file" : "lib/Moose/Exception/WrapTakesACodeRefToBless.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exception::WrongTypeConstraintGiven" : {
          "file" : "lib/Moose/Exception/WrongTypeConstraintGiven.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Exporter" : {
          "file" : "lib/Moose/Exporter.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Intro" : {
          "file" : "lib/Moose/Intro.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Manual" : {
          "file" : "lib/Moose/Manual.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Manual::Attributes" : {
          "file" : "lib/Moose/Manual/Attributes.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Manual::BestPractices" : {
          "file" : "lib/Moose/Manual/BestPractices.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Manual::Classes" : {
          "file" : "lib/Moose/Manual/Classes.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Manual::Concepts" : {
          "file" : "lib/Moose/Manual/Concepts.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Manual::Construction" : {
          "file" : "lib/Moose/Manual/Construction.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Manual::Contributing" : {
          "file" : "lib/Moose/Manual/Contributing.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Manual::Delegation" : {
          "file" : "lib/Moose/Manual/Delegation.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Manual::Delta" : {
          "file" : "lib/Moose/Manual/Delta.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Manual::Exceptions" : {
          "file" : "lib/Moose/Manual/Exceptions.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Manual::Exceptions::Manifest" : {
          "file" : "lib/Moose/Manual/Exceptions/Manifest.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Manual::FAQ" : {
          "file" : "lib/Moose/Manual/FAQ.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Manual::MOP" : {
          "file" : "lib/Moose/Manual/MOP.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Manual::MethodModifiers" : {
          "file" : "lib/Moose/Manual/MethodModifiers.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Manual::MooseX" : {
          "file" : "lib/Moose/Manual/MooseX.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Manual::Roles" : {
          "file" : "lib/Moose/Manual/Roles.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Manual::Support" : {
          "file" : "lib/Moose/Manual/Support.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Manual::Types" : {
          "file" : "lib/Moose/Manual/Types.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Manual::Unsweetened" : {
          "file" : "lib/Moose/Manual/Unsweetened.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::Attribute" : {
          "file" : "lib/Moose/Meta/Attribute.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::Attribute::Custom::Moose" : {
          "file" : "lib/Moose/Meta/Attribute.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::Attribute::Native" : {
          "file" : "lib/Moose/Meta/Attribute/Native.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::Attribute::Native::Trait::Array" : {
          "file" : "lib/Moose/Meta/Attribute/Native/Trait/Array.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::Attribute::Native::Trait::Bool" : {
          "file" : "lib/Moose/Meta/Attribute/Native/Trait/Bool.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::Attribute::Native::Trait::Code" : {
          "file" : "lib/Moose/Meta/Attribute/Native/Trait/Code.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::Attribute::Native::Trait::Counter" : {
          "file" : "lib/Moose/Meta/Attribute/Native/Trait/Counter.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::Attribute::Native::Trait::Hash" : {
          "file" : "lib/Moose/Meta/Attribute/Native/Trait/Hash.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::Attribute::Native::Trait::Number" : {
          "file" : "lib/Moose/Meta/Attribute/Native/Trait/Number.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::Attribute::Native::Trait::String" : {
          "file" : "lib/Moose/Meta/Attribute/Native/Trait/String.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::Class" : {
          "file" : "lib/Moose/Meta/Class.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::Instance" : {
          "file" : "lib/Moose/Meta/Instance.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::Method" : {
          "file" : "lib/Moose/Meta/Method.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::Method::Accessor" : {
          "file" : "lib/Moose/Meta/Method/Accessor.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::Method::Augmented" : {
          "file" : "lib/Moose/Meta/Method/Augmented.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::Method::Constructor" : {
          "file" : "lib/Moose/Meta/Method/Constructor.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::Method::Delegation" : {
          "file" : "lib/Moose/Meta/Method/Delegation.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::Method::Destructor" : {
          "file" : "lib/Moose/Meta/Method/Destructor.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::Method::Meta" : {
          "file" : "lib/Moose/Meta/Method/Meta.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::Method::Overridden" : {
          "file" : "lib/Moose/Meta/Method/Overridden.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::Role" : {
          "file" : "lib/Moose/Meta/Role.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::Role::Application" : {
          "file" : "lib/Moose/Meta/Role/Application.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::Role::Application::RoleSummation" : {
          "file" : "lib/Moose/Meta/Role/Application/RoleSummation.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::Role::Application::ToClass" : {
          "file" : "lib/Moose/Meta/Role/Application/ToClass.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::Role::Application::ToInstance" : {
          "file" : "lib/Moose/Meta/Role/Application/ToInstance.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::Role::Application::ToRole" : {
          "file" : "lib/Moose/Meta/Role/Application/ToRole.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::Role::Attribute" : {
          "file" : "lib/Moose/Meta/Role/Attribute.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::Role::Composite" : {
          "file" : "lib/Moose/Meta/Role/Composite.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::Role::Method" : {
          "file" : "lib/Moose/Meta/Role/Method.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::Role::Method::Conflicting" : {
          "file" : "lib/Moose/Meta/Role/Method/Conflicting.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::Role::Method::Required" : {
          "file" : "lib/Moose/Meta/Role/Method/Required.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::TypeCoercion" : {
          "file" : "lib/Moose/Meta/TypeCoercion.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::TypeCoercion::Union" : {
          "file" : "lib/Moose/Meta/TypeCoercion/Union.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::TypeConstraint" : {
          "file" : "lib/Moose/Meta/TypeConstraint.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::TypeConstraint::Class" : {
          "file" : "lib/Moose/Meta/TypeConstraint/Class.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::TypeConstraint::DuckType" : {
          "file" : "lib/Moose/Meta/TypeConstraint/DuckType.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::TypeConstraint::Enum" : {
          "file" : "lib/Moose/Meta/TypeConstraint/Enum.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::TypeConstraint::Parameterizable" : {
          "file" : "lib/Moose/Meta/TypeConstraint/Parameterizable.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::TypeConstraint::Parameterized" : {
          "file" : "lib/Moose/Meta/TypeConstraint/Parameterized.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::TypeConstraint::Registry" : {
          "file" : "lib/Moose/Meta/TypeConstraint/Registry.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::TypeConstraint::Role" : {
          "file" : "lib/Moose/Meta/TypeConstraint/Role.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Meta::TypeConstraint::Union" : {
          "file" : "lib/Moose/Meta/TypeConstraint/Union.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Object" : {
          "file" : "lib/Moose/Object.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Role" : {
          "file" : "lib/Moose/Role.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Spec::Role" : {
          "file" : "lib/Moose/Spec/Role.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Unsweetened" : {
          "file" : "lib/Moose/Unsweetened.pod",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Util" : {
          "file" : "lib/Moose/Util.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Util::MetaRole" : {
          "file" : "lib/Moose/Util/MetaRole.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Moose::Util::TypeConstraints" : {
          "file" : "lib/Moose/Util/TypeConstraints.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "Test::Moose" : {
          "file" : "lib/Test/Moose.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "metaclass" : {
          "file" : "lib/metaclass.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       },
       "oose" : {
          "file" : "lib/oose.pm",
-         "version" : "2.1204"
+         "version" : "2.1210"
       }
    },
    "release_status" : "stable",
@@ -1569,16 +1572,16 @@
       "x_IRC" : "irc://irc.perl.org/#moose",
       "x_MailingList" : "http://lists.perl.org/list/moose.html"
    },
-   "version" : "2.1204",
+   "version" : "2.1210",
    "x_Dist_Zilla" : {
       "perl" : {
-         "version" : "5.019007"
+         "version" : "5.021001"
       },
       "plugins" : [
          {
-            "class" : "inc::RequireAuthorDeps",
-            "name" : "=inc::RequireAuthorDeps",
-            "version" : null
+            "class" : "Dist::Zilla::Plugin::EnsurePrereqsInstalled",
+            "name" : "EnsurePrereqsInstalled",
+            "version" : "0.004"
          },
          {
             "class" : "inc::Clean",
@@ -1588,82 +1591,72 @@
          {
             "class" : "Dist::Zilla::Plugin::GatherDir",
             "name" : "GatherDir",
-            "version" : "5.012"
+            "version" : "5.019"
          },
          {
             "class" : "Dist::Zilla::Plugin::PruneCruft",
             "name" : "PruneCruft",
-            "version" : "5.012"
+            "version" : "5.019"
          },
          {
             "class" : "Dist::Zilla::Plugin::ManifestSkip",
             "name" : "ManifestSkip",
-            "version" : "5.012"
+            "version" : "5.019"
          },
          {
             "class" : "Dist::Zilla::Plugin::MetaYAML",
             "name" : "MetaYAML",
-            "version" : "5.012"
+            "version" : "5.019"
          },
          {
             "class" : "Dist::Zilla::Plugin::MetaJSON",
             "name" : "MetaJSON",
-            "version" : "5.012"
+            "version" : "5.019"
          },
          {
             "class" : "Dist::Zilla::Plugin::License",
             "name" : "License",
-            "version" : "5.012"
+            "version" : "5.019"
          },
          {
             "class" : "Dist::Zilla::Plugin::ExecDir",
             "name" : "ExecDir",
-            "version" : "5.012"
+            "version" : "5.019"
          },
          {
             "class" : "Dist::Zilla::Plugin::ShareDir",
             "name" : "ShareDir",
-            "version" : "5.012"
+            "version" : "5.019"
          },
          {
             "class" : "inc::MakeMaker",
+            "config" : {
+               "Dist::Zilla::Role::TestRunner" : {
+                  "default_jobs" : "9"
+               }
+            },
             "name" : "=inc::MakeMaker",
             "version" : null
          },
          {
             "class" : "Dist::Zilla::Plugin::Manifest",
             "name" : "Manifest",
-            "version" : "5.012"
-         },
-         {
-            "class" : "Dist::Zilla::Plugin::TestRelease",
-            "name" : "TestRelease",
-            "version" : "5.012"
-         },
-         {
-            "class" : "Dist::Zilla::Plugin::UploadToCPAN",
-            "name" : "UploadToCPAN",
-            "version" : "5.012"
+            "version" : "5.019"
          },
          {
             "class" : "Dist::Zilla::Plugin::NextRelease",
             "name" : "NextRelease",
-            "version" : "5.012"
-         },
-         {
-            "class" : "Dist::Zilla::Plugin::PruneFiles",
-            "name" : "PruneFiles",
-            "version" : "5.012"
+            "version" : "5.019"
          },
          {
             "class" : "Dist::Zilla::Plugin::PkgVersion",
             "name" : "PkgVersion",
-            "version" : "5.012"
+            "version" : "5.019"
          },
          {
             "class" : "Dist::Zilla::Plugin::MetaConfig",
             "name" : "MetaConfig",
-            "version" : "5.012"
+            "version" : "5.019"
          },
          {
             "class" : "Dist::Zilla::Plugin::Authority",
@@ -1673,20 +1666,35 @@
          {
             "class" : "Dist::Zilla::Plugin::MetaResources",
             "name" : "MetaResources",
-            "version" : "5.012"
+            "version" : "5.019"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FileFinder::ByName",
+            "name" : "PodModules",
+            "version" : "5.019"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FileFinder::Filter",
+            "name" : "ModulesSansPod",
+            "version" : "5.019"
+         },
+         {
+            "class" : "inc::SimpleProvides",
+            "name" : "=inc::SimpleProvides",
+            "version" : null
          },
          {
             "class" : "Dist::Zilla::Plugin::MetaProvides::Package",
             "config" : {
                "Dist::Zilla::Plugin::MetaProvides::Package" : {
                   "finder" : [
-                     ":InstallModules"
+                     "ModulesSansPod"
                   ],
                   "finder_objects" : [
                      {
-                        "class" : "Dist::Zilla::Plugin::FinderCode",
-                        "name" : ":InstallModules",
-                        "version" : "5.012"
+                        "class" : "Dist::Zilla::Plugin::FileFinder::Filter",
+                        "name" : "ModulesSansPod",
+                        "version" : "5.019"
                      }
                   ]
                },
@@ -1702,7 +1710,7 @@
          {
             "class" : "Dist::Zilla::Plugin::MetaNoIndex",
             "name" : "MetaNoIndex",
-            "version" : "5.012"
+            "version" : "5.019"
          },
          {
             "class" : "Dist::Zilla::Plugin::SurgicalPodWeaver",
@@ -1816,7 +1824,7 @@
                }
             },
             "name" : "PromptIfStale",
-            "version" : "0.015"
+            "version" : "0.023"
          },
          {
             "class" : "Dist::Zilla::Plugin::EOLTests",
@@ -1826,27 +1834,26 @@
          {
             "class" : "Dist::Zilla::Plugin::PodSyntaxTests",
             "name" : "PodSyntaxTests",
-            "version" : "5.012"
+            "version" : "5.019"
          },
          {
             "class" : "Dist::Zilla::Plugin::Test::NoTabs",
             "config" : {
                "Dist::Zilla::Plugin::Test::NoTabs" : {
-                  "module_finder" : [
-                     ":InstallModules"
-                  ],
-                  "script_finder" : [
-                     ":ExecFiles"
+                  "finder" : [
+                     ":InstallModules",
+                     ":ExecFiles",
+                     ":TestFiles"
                   ]
                }
             },
             "name" : "Test::NoTabs",
-            "version" : "0.06"
+            "version" : "0.08"
          },
          {
             "class" : "Dist::Zilla::Plugin::MetaTests",
             "name" : "MetaTests",
-            "version" : "5.012"
+            "version" : "5.019"
          },
          {
             "class" : "Dist::Zilla::Plugin::Test::Kwalitee",
@@ -1856,12 +1863,17 @@
          {
             "class" : "Dist::Zilla::Plugin::MojibakeTests",
             "name" : "MojibakeTests",
-            "version" : "0.5"
+            "version" : "0.7"
          },
          {
             "class" : "Dist::Zilla::Plugin::RunExtraTests",
+            "config" : {
+               "Dist::Zilla::Role::TestRunner" : {
+                  "default_jobs" : "9"
+               }
+            },
             "name" : "RunExtraTests",
-            "version" : "0.016"
+            "version" : "0.021"
          },
          {
             "class" : "Dist::Zilla::Plugin::Test::ReportPrereqs",
@@ -1877,7 +1889,7 @@
             "class" : "Dist::Zilla::Plugin::Test::Compile",
             "config" : {
                "Dist::Zilla::Plugin::Test::Compile" : {
-                  "filename" : "xt/author/00-compile.t",
+                  "filename" : "xt/release/00-compile.t",
                   "module_finder" : [
                      ":InstallModules"
                   ],
@@ -1887,7 +1899,12 @@
                }
             },
             "name" : "Test::Compile",
-            "version" : "2.039"
+            "version" : "2.043"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::CheckVersionIncrement",
+            "name" : "CheckVersionIncrement",
+            "version" : "0.121750"
          },
          {
             "class" : "Dist::Zilla::Plugin::CheckChangesHasContent",
@@ -1903,7 +1920,7 @@
                }
             },
             "name" : "Prereqs",
-            "version" : "5.012"
+            "version" : "5.019"
          },
          {
             "class" : "Dist::Zilla::Plugin::Prereqs",
@@ -1914,7 +1931,7 @@
                }
             },
             "name" : "TestRequires",
-            "version" : "5.012"
+            "version" : "5.019"
          },
          {
             "class" : "Dist::Zilla::Plugin::Prereqs",
@@ -1925,12 +1942,12 @@
                }
             },
             "name" : "ConfigureRequires",
-            "version" : "5.012"
+            "version" : "5.019"
          },
          {
             "class" : "Dist::Zilla::Plugin::Prereqs::AuthorDeps",
             "name" : "Prereqs::AuthorDeps",
-            "version" : "0.002"
+            "version" : "0.003"
          },
          {
             "class" : "Dist::Zilla::Plugin::Prereqs",
@@ -1941,7 +1958,7 @@
                }
             },
             "name" : "DevelopRequires",
-            "version" : "5.012"
+            "version" : "5.019"
          },
          {
             "class" : "Dist::Zilla::Plugin::Prereqs",
@@ -1952,23 +1969,17 @@
                }
             },
             "name" : "RuntimeRecommends",
-            "version" : "5.012"
-         },
-         {
-            "class" : "Dist::Zilla::Plugin::Prereqs",
-            "config" : {
-               "Dist::Zilla::Plugin::Prereqs" : {
-                  "phase" : "develop",
-                  "type" : "conflicts"
-               }
-            },
-            "name" : "DevelopConflicts",
-            "version" : "5.012"
+            "version" : "5.019"
          },
          {
             "class" : "Dist::Zilla::Plugin::Conflicts",
             "name" : "Conflicts",
-            "version" : "0.13"
+            "version" : "0.14"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Test::CheckBreaks",
+            "name" : "Test::CheckBreaks",
+            "version" : "0.009"
          },
          {
             "class" : "inc::CheckDelta",
@@ -1987,38 +1998,107 @@
          },
          {
             "class" : "Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch",
+            "config" : {
+               "Dist::Zilla::Role::Git::Repo" : {
+                  "repo_root" : "."
+               }
+            },
             "name" : "Git::CheckFor::CorrectBranch",
-            "version" : "0.009"
+            "version" : "0.011"
          },
          {
             "class" : "Dist::Zilla::Plugin::Git::Check",
+            "config" : {
+               "Dist::Zilla::Plugin::Git::Check" : {
+                  "untracked_files" : "die"
+               },
+               "Dist::Zilla::Role::Git::DirtyFiles" : {
+                  "allow_dirty" : [],
+                  "allow_dirty_match" : [],
+                  "changelog" : "Changes"
+               },
+               "Dist::Zilla::Role::Git::Repo" : {
+                  "repo_root" : "."
+               }
+            },
             "name" : "Git::Check",
-            "version" : "2.019"
+            "version" : "2.023"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::TestRelease",
+            "name" : "TestRelease",
+            "version" : "5.019"
          },
          {
             "class" : "Dist::Zilla::Plugin::ConfirmRelease",
             "name" : "ConfirmRelease",
-            "version" : "5.012"
+            "version" : "5.019"
          },
          {
             "class" : "Dist::Zilla::Plugin::Git::Commit",
+            "config" : {
+               "Dist::Zilla::Plugin::Git::Commit" : {
+                  "add_files_in" : [],
+                  "commit_msg" : "changelog for %N-%v%t",
+                  "time_zone" : "local"
+               },
+               "Dist::Zilla::Role::Git::DirtyFiles" : {
+                  "allow_dirty" : [
+                     "Changes"
+                  ],
+                  "allow_dirty_match" : [],
+                  "changelog" : "Changes"
+               },
+               "Dist::Zilla::Role::Git::Repo" : {
+                  "repo_root" : "."
+               }
+            },
             "name" : "Git::Commit",
-            "version" : "2.019"
+            "version" : "2.023"
          },
          {
             "class" : "Dist::Zilla::Plugin::Git::Tag",
+            "config" : {
+               "Dist::Zilla::Plugin::Git::Tag" : {
+                  "branch" : null,
+                  "signed" : 0,
+                  "tag" : "2.1210",
+                  "tag_format" : "%v",
+                  "tag_message" : "%v%t",
+                  "time_zone" : "local"
+               },
+               "Dist::Zilla::Role::Git::Repo" : {
+                  "repo_root" : "."
+               }
+            },
             "name" : "Git::Tag",
-            "version" : "2.019"
+            "version" : "2.023"
          },
          {
             "class" : "Dist::Zilla::Plugin::Git::Push",
+            "config" : {
+               "Dist::Zilla::Plugin::Git::Push" : {
+                  "push_to" : [
+                     "origin"
+                  ],
+                  "remotes_must_exist" : 1
+               },
+               "Dist::Zilla::Role::Git::Repo" : {
+                  "repo_root" : "."
+               }
+            },
             "name" : "Git::Push",
-            "version" : "2.019"
+            "version" : "2.023"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::UploadToCPAN",
+            "name" : "UploadToCPAN",
+            "version" : "5.019"
          },
          {
             "class" : "Dist::Zilla::Plugin::ContributorsFromGit",
             "name" : "ContributorsFromGit",
-            "version" : "0.006"
+            "version" : "0.013"
          },
          {
             "class" : "inc::GenerateDocs",
@@ -2028,42 +2108,42 @@
          {
             "class" : "Dist::Zilla::Plugin::FinderCode",
             "name" : ":InstallModules",
-            "version" : "5.012"
+            "version" : "5.019"
          },
          {
             "class" : "Dist::Zilla::Plugin::FinderCode",
             "name" : ":IncModules",
-            "version" : "5.012"
+            "version" : "5.019"
          },
          {
             "class" : "Dist::Zilla::Plugin::FinderCode",
             "name" : ":TestFiles",
-            "version" : "5.012"
+            "version" : "5.019"
          },
          {
             "class" : "Dist::Zilla::Plugin::FinderCode",
             "name" : ":ExecFiles",
-            "version" : "5.012"
+            "version" : "5.019"
          },
          {
             "class" : "Dist::Zilla::Plugin::FinderCode",
             "name" : ":ShareFiles",
-            "version" : "5.012"
+            "version" : "5.019"
          },
          {
             "class" : "Dist::Zilla::Plugin::FinderCode",
             "name" : ":MainModule",
-            "version" : "5.012"
+            "version" : "5.019"
          },
          {
             "class" : "Dist::Zilla::Plugin::FinderCode",
             "name" : ":AllFiles",
-            "version" : "5.012"
+            "version" : "5.019"
          },
          {
             "class" : "Dist::Zilla::Plugin::FinderCode",
             "name" : ":NoFiles",
-            "version" : "5.012"
+            "version" : "5.019"
          }
       ],
       "zilla" : {
@@ -2071,76 +2151,76 @@
          "config" : {
             "is_trial" : "0"
          },
-         "version" : "5.012"
+         "version" : "5.019"
       }
    },
    "x_authority" : "cpan:STEVAN",
    "x_breaks" : {
-      "Catalyst" : "5.90049999",
-      "Config::MVP" : "2.200004",
-      "Devel::REPL" : "1.003020",
-      "Dist::Zilla::Plugin::Git" : "2.016",
-      "Fey" : "0.36",
-      "Fey::ORM" : "0.42",
-      "File::ChangeNotify" : "0.15",
-      "HTTP::Throwable" : "0.017",
-      "KiokuDB" : "0.51",
-      "Markdent" : "0.16",
-      "Mason" : "2.18",
-      "MooseX::ABC" : "0.05",
-      "MooseX::Aliases" : "0.08",
-      "MooseX::AlwaysCoerce" : "0.13",
-      "MooseX::App" : "1.22",
-      "MooseX::Attribute::Deflator" : "2.1.7",
-      "MooseX::Attribute::Dependent" : "1.1.0",
-      "MooseX::Attribute::Prototype" : "0.10",
-      "MooseX::AttributeHelpers" : "0.22",
-      "MooseX::AttributeIndexes" : "1.0.0",
-      "MooseX::AttributeInflate" : "0.02",
-      "MooseX::CascadeClearing" : "0.03",
-      "MooseX::ClassAttribute" : "0.26",
-      "MooseX::Constructor::AllErrors" : "0.021",
-      "MooseX::Declare" : "0.35",
-      "MooseX::FollowPBP" : "0.02",
-      "MooseX::Getopt" : "0.56",
-      "MooseX::HasDefaults" : "0.02",
-      "MooseX::InstanceTracking" : "0.04",
-      "MooseX::LazyRequire" : "0.06",
-      "MooseX::Meta::Attribute::Index" : "0.04",
-      "MooseX::Meta::Attribute::Lvalue" : "0.05",
-      "MooseX::Method::Signatures" : "0.44",
-      "MooseX::MethodAttributes" : "0.22",
-      "MooseX::NonMoose" : "0.24",
-      "MooseX::Object::Pluggable" : "0.0011",
-      "MooseX::POE" : "0.214",
-      "MooseX::Params::Validate" : "0.05",
-      "MooseX::PrivateSetters" : "0.03",
-      "MooseX::Role::Cmd" : "0.06",
-      "MooseX::Role::Parameterized" : "1.00",
-      "MooseX::Role::WithOverloading" : "0.07",
-      "MooseX::Runnable" : "0.03",
-      "MooseX::Scaffold" : "0.05",
-      "MooseX::SemiAffordanceAccessor" : "0.05",
-      "MooseX::SetOnce" : "0.100473",
-      "MooseX::Singleton" : "0.25",
-      "MooseX::SlurpyConstructor" : "1.1",
-      "MooseX::Storage" : "0.42",
-      "MooseX::StrictConstructor" : "0.12",
-      "MooseX::Traits" : "0.11",
-      "MooseX::Types" : "0.19",
-      "MooseX::Types::Parameterizable" : "0.05",
-      "MooseX::Types::Set::Object" : "0.03",
-      "MooseX::Types::Signal" : "1.101930",
-      "MooseX::UndefTolerant" : "0.11",
-      "PRANG" : "0.14",
-      "Pod::Elemental" : "0.093280",
-      "Pod::Weaver" : "3.101638",
-      "Reaction" : "0.002003",
-      "Test::Able" : "0.10",
-      "Test::CleanNamespaces" : "0.03",
-      "Test::Moose::More" : "0.022",
-      "Test::TempDir" : "0.05",
-      "namespace::autoclean" : "0.08"
+      "Catalyst" : "<= 5.90049999",
+      "Config::MVP" : "<= 2.200004",
+      "Devel::REPL" : "<= 1.003020",
+      "Dist::Zilla::Plugin::Git" : "<= 2.016",
+      "Fey" : "<= 0.36",
+      "Fey::ORM" : "<= 0.42",
+      "File::ChangeNotify" : "<= 0.15",
+      "HTTP::Throwable" : "<= 0.017",
+      "KiokuDB" : "<= 0.51",
+      "Markdent" : "<= 0.16",
+      "Mason" : "<= 2.18",
+      "MooseX::ABC" : "<= 0.05",
+      "MooseX::Aliases" : "<= 0.08",
+      "MooseX::AlwaysCoerce" : "<= 0.13",
+      "MooseX::App" : "<= 1.22",
+      "MooseX::Attribute::Deflator" : "<= 2.1.7",
+      "MooseX::Attribute::Dependent" : "<= 1.1.0",
+      "MooseX::Attribute::Prototype" : "<= 0.10",
+      "MooseX::AttributeHelpers" : "<= 0.22",
+      "MooseX::AttributeIndexes" : "<= 1.0.0",
+      "MooseX::AttributeInflate" : "<= 0.02",
+      "MooseX::CascadeClearing" : "<= 0.03",
+      "MooseX::ClassAttribute" : "<= 0.26",
+      "MooseX::Constructor::AllErrors" : "<= 0.021",
+      "MooseX::Declare" : "<= 0.35",
+      "MooseX::FollowPBP" : "<= 0.02",
+      "MooseX::Getopt" : "<= 0.56",
+      "MooseX::InstanceTracking" : "<= 0.04",
+      "MooseX::LazyRequire" : "<= 0.06",
+      "MooseX::Meta::Attribute::Index" : "<= 0.04",
+      "MooseX::Meta::Attribute::Lvalue" : "<= 0.05",
+      "MooseX::Method::Signatures" : "<= 0.44",
+      "MooseX::MethodAttributes" : "<= 0.22",
+      "MooseX::NonMoose" : "<= 0.24",
+      "MooseX::Object::Pluggable" : "<= 0.0011",
+      "MooseX::POE" : "<= 0.214",
+      "MooseX::Params::Validate" : "<= 0.05",
+      "MooseX::PrivateSetters" : "<= 0.03",
+      "MooseX::Role::Cmd" : "<= 0.06",
+      "MooseX::Role::Parameterized" : "<= 1.00",
+      "MooseX::Role::WithOverloading" : "<= 0.07",
+      "MooseX::Runnable" : "<= 0.03",
+      "MooseX::Scaffold" : "<= 0.05",
+      "MooseX::SemiAffordanceAccessor" : "<= 0.05",
+      "MooseX::SetOnce" : "<= 0.100473",
+      "MooseX::Singleton" : "<= 0.25",
+      "MooseX::SlurpyConstructor" : "<= 1.1",
+      "MooseX::Storage" : "<= 0.42",
+      "MooseX::StrictConstructor" : "<= 0.12",
+      "MooseX::Traits" : "<= 0.11",
+      "MooseX::Types" : "<= 0.19",
+      "MooseX::Types::Parameterizable" : "<= 0.05",
+      "MooseX::Types::Set::Object" : "<= 0.03",
+      "MooseX::Types::Signal" : "<= 1.101930",
+      "MooseX::UndefTolerant" : "<= 0.11",
+      "PRANG" : "<= 0.14",
+      "Pod::Elemental" : "<= 0.093280",
+      "Pod::Weaver" : "<= 3.101638",
+      "Reaction" : "<= 0.002003",
+      "Test::Able" : "<= 0.10",
+      "Test::CleanNamespaces" : "<= 0.03",
+      "Test::Moose::More" : "<= 0.022",
+      "Test::TempDir" : "<= 0.05",
+      "Throwable" : "<= 0.102080",
+      "namespace::autoclean" : "<= 0.08"
    },
    "x_contributors" : [
       "2shortplanks <mark@twoshortplanks.com>",
@@ -2152,11 +2232,13 @@
       "Aran Clary Deltac <bluefeet@cpan.org>",
       "Ash Berlin <ash@cpan.org>",
       "Brad Bowman <bsb@strategicdata.com.au>",
+      "Brendan Byrd <Perl@ResonatorSoft.org>",
       "Brian Manning <elspicyjack@gmail.com>",
+      "Chad Granum <chad.granum@dreamhost.com>",
       "Chankey Pathak <chankey007@gmail.com>",
       "Chia-liang Kao <clkao@clkao.org>",
       "Chip <chip@pobox.com>",
-      "Chris Weyl <cweyl@alumni.drew.edu>",
+      "Chris Weyl <rsrchboy@cpan.org>",
       "Christian Hansen <chansen@cpan.org>",
       "Christopher J. Madsen <perl@cjmweb.net>",
       "Cory Watson <github@onemogin.com>",
@@ -2189,27 +2271,28 @@
       "Justin DeVuyst <justin@devuyst.com>",
       "Justin Hunter <justin.d.hunter@gmail.com>",
       "Kent Fredric <kentfredric@gmail.com>",
-      "Lars D\u026a\u1d07\u1d04\u1d0b\u1d0f\u1d21 \u8fea\u62c9\u65af <daxim@cpan.org>",
+      "Lars Dɪᴇᴄᴋᴏᴡ 迪拉斯 <daxim@cpan.org>",
       "Leon Brocard <acme@astray.com>",
       "Marc Mims <marc@questright.com>",
-      "Marcel Gr\u00fcnauer <hanekomu@gmail.com>",
+      "Marcel Grünauer <hanekomu@gmail.com>",
       "Marcus Ramberg <marcus@nordaaker.com>",
       "Mark A. Stratman <stratman@gmail.com>",
       "Mark Allen <mrallen1@yahoo.com>",
       "Mateu X Hunter <hunter@missoula.org>",
       "Matt Kraai <kraai@ftbfs.org>",
       "Matthew Horsfall <wolfsage@gmail.com>",
+      "Michael Rykov <mrykov@gmail.com>",
       "Mike Whitaker <mike@altrion.org>",
       "Moritz Onken <onken@houseofdesign.de>",
       "Nathan Gray <kolibrie@graystudios.org>",
       "Nelo Onyiah <io1@sanger.ac.uk>",
       "Olaf Alders <olaf@wundersolutions.com>",
-      "Olivier Mengu\u00e9 <dolmen@cpan.org>",
+      "Olivier Mengué <dolmen@cpan.org>",
       "Olof Johansson <olof@ethup.se>",
       "Patrick Donelan <pat@patspam.com>",
       "Paul Driver <frodwith@gmail.com>",
       "Paul Jamieson Fenwick <pjf@perltraining.com.au>",
-      "Pawe\u0142 Murias <pawelmurias@gmail.com>",
+      "Paweł Murias <pawelmurias@gmail.com>",
       "Pedro Melo <melo@simplicidade.org>",
       "Perlover <perlover@perlover.com>",
       "Peter Shangov <pshangov@yahoo.com>",
@@ -2225,6 +2308,7 @@
       "Scott McWhirter <konobi@cpan.org>",
       "Shlomi Fish <shlomif@iglu.org.il>",
       "Stefan O'Rear <stefanor@cox.net>",
+      "Thomas Sibley <tsibley@cpan.org>",
       "Todd Hepler <thepler@employees.org>",
       "Tokuhiro Matsuno <tokuhirom@gp.ath.cx>",
       "Tomas Doran <bobtfish@bobtfish.net>",
@@ -2242,10 +2326,11 @@
       "matthof <rmhofmann@gmail.com>",
       "michaelr <michaelr@michaelr-laptop.(none)>",
       "nperez <nperez@cpan.org>",
+      "pktm <pktm@users.noreply.github.com>",
       "rodrigolive <rodrigolive@gmail.com>",
       "shelling <navyblueshellingford@gmail.com>",
       "wickline <m-s-w-github@wickline.org>",
-      "\u00c6var Arnfj\u00f6r\u00f0 Bjarmason <avarab@gmail.com>"
+      "Ævar Arnfjörð Bjarmason <avarab@gmail.com>"
    ]
 }
 
@@ -12,6 +12,8 @@ author:
   - 'Chris Prather <chris@prather.org>'
   - 'Matt S Trout <mst@shadowcat.co.uk>'
 build_requires:
+  CPAN::Meta::Check: '0.007'
+  CPAN::Meta::Requirements: '0'
   Test::Fatal: '0.001'
   Test::More: '0.88'
   Test::Requires: '0.05'
@@ -21,7 +23,7 @@ configure_requires:
   ExtUtils::MakeMaker: '6.30'
   File::Spec: '0'
 dynamic_config: 0
-generated_by: 'Dist::Zilla version 5.012, CPAN::Meta::Converter version 2.133380'
+generated_by: 'Dist::Zilla version 5.019, CPAN::Meta::Converter version 2.141520'
 license: perl
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -50,1021 +52,1018 @@ no_index:
 provides:
   Class::MOP:
     file: lib/Class/MOP.pm
-    version: '2.1204'
+    version: '2.1210'
   Class::MOP::Attribute:
     file: lib/Class/MOP/Attribute.pm
-    version: '2.1204'
+    version: '2.1210'
   Class::MOP::Class:
     file: lib/Class/MOP/Class.pm
-    version: '2.1204'
+    version: '2.1210'
   Class::MOP::Instance:
     file: lib/Class/MOP/Instance.pm
-    version: '2.1204'
+    version: '2.1210'
   Class::MOP::Method:
     file: lib/Class/MOP/Method.pm
-    version: '2.1204'
+    version: '2.1210'
   Class::MOP::Method::Accessor:
     file: lib/Class/MOP/Method/Accessor.pm
-    version: '2.1204'
+    version: '2.1210'
   Class::MOP::Method::Constructor:
     file: lib/Class/MOP/Method/Constructor.pm
-    version: '2.1204'
+    version: '2.1210'
   Class::MOP::Method::Generated:
     file: lib/Class/MOP/Method/Generated.pm
-    version: '2.1204'
+    version: '2.1210'
   Class::MOP::Method::Inlined:
     file: lib/Class/MOP/Method/Inlined.pm
-    version: '2.1204'
+    version: '2.1210'
   Class::MOP::Method::Meta:
     file: lib/Class/MOP/Method/Meta.pm
-    version: '2.1204'
+    version: '2.1210'
   Class::MOP::Method::Overload:
     file: lib/Class/MOP/Method/Overload.pm
-    version: '2.1204'
+    version: '2.1210'
   Class::MOP::Method::Wrapped:
     file: lib/Class/MOP/Method/Wrapped.pm
-    version: '2.1204'
+    version: '2.1210'
   Class::MOP::Module:
     file: lib/Class/MOP/Module.pm
-    version: '2.1204'
+    version: '2.1210'
   Class::MOP::Object:
     file: lib/Class/MOP/Object.pm
-    version: '2.1204'
+    version: '2.1210'
   Class::MOP::Package:
     file: lib/Class/MOP/Package.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose:
     file: lib/Moose.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Cookbook:
     file: lib/Moose/Cookbook.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Cookbook::Basics::BankAccount_MethodModifiersAndSubclassing:
     file: lib/Moose/Cookbook/Basics/BankAccount_MethodModifiersAndSubclassing.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Cookbook::Basics::BinaryTree_AttributeFeatures:
     file: lib/Moose/Cookbook/Basics/BinaryTree_AttributeFeatures.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Cookbook::Basics::BinaryTree_BuilderAndLazyBuild:
     file: lib/Moose/Cookbook/Basics/BinaryTree_BuilderAndLazyBuild.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Cookbook::Basics::Company_Subtypes:
     file: lib/Moose/Cookbook/Basics/Company_Subtypes.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Cookbook::Basics::DateTime_ExtendingNonMooseParent:
     file: lib/Moose/Cookbook/Basics/DateTime_ExtendingNonMooseParent.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Cookbook::Basics::Document_AugmentAndInner:
     file: lib/Moose/Cookbook/Basics/Document_AugmentAndInner.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Cookbook::Basics::Genome_OverloadingSubtypesAndCoercion:
     file: lib/Moose/Cookbook/Basics/Genome_OverloadingSubtypesAndCoercion.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Cookbook::Basics::HTTP_SubtypesAndCoercion:
     file: lib/Moose/Cookbook/Basics/HTTP_SubtypesAndCoercion.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Cookbook::Basics::Immutable:
     file: lib/Moose/Cookbook/Basics/Immutable.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Cookbook::Basics::Person_BUILDARGSAndBUILD:
     file: lib/Moose/Cookbook/Basics/Person_BUILDARGSAndBUILD.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Cookbook::Basics::Point_AttributesAndSubclassing:
     file: lib/Moose/Cookbook/Basics/Point_AttributesAndSubclassing.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Cookbook::Extending::Debugging_BaseClassRole:
     file: lib/Moose/Cookbook/Extending/Debugging_BaseClassRole.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Cookbook::Extending::ExtensionOverview:
     file: lib/Moose/Cookbook/Extending/ExtensionOverview.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Cookbook::Extending::Mooseish_MooseSugar:
     file: lib/Moose/Cookbook/Extending/Mooseish_MooseSugar.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Cookbook::Legacy::Debugging_BaseClassReplacement:
     file: lib/Moose/Cookbook/Legacy/Debugging_BaseClassReplacement.pod
-    version: '2.1204'
+    version: '2.1210'
+  Moose::Cookbook::Legacy::Labeled_AttributeMetaclass:
+    file: lib/Moose/Cookbook/Legacy/Labeled_AttributeMetaclass.pod
+    version: '2.1210'
+  Moose::Cookbook::Legacy::Table_ClassMetaclass:
+    file: lib/Moose/Cookbook/Legacy/Table_ClassMetaclass.pod
+    version: '2.1210'
   Moose::Cookbook::Meta::GlobRef_InstanceMetaclass:
     file: lib/Moose/Cookbook/Meta/GlobRef_InstanceMetaclass.pod
-    version: '2.1204'
-  Moose::Cookbook::Meta::Labeled_AttributeMetaclass:
-    file: lib/Moose/Cookbook/Legacy/Labeled_AttributeMetaclass.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Cookbook::Meta::Labeled_AttributeTrait:
     file: lib/Moose/Cookbook/Meta/Labeled_AttributeTrait.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Cookbook::Meta::PrivateOrPublic_MethodMetaclass:
     file: lib/Moose/Cookbook/Meta/PrivateOrPublic_MethodMetaclass.pod
-    version: '2.1204'
-  Moose::Cookbook::Meta::Table_ClassMetaclass:
-    file: lib/Moose/Cookbook/Legacy/Table_ClassMetaclass.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Cookbook::Meta::Table_MetaclassTrait:
     file: lib/Moose/Cookbook/Meta/Table_MetaclassTrait.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Cookbook::Meta::WhyMeta:
     file: lib/Moose/Cookbook/Meta/WhyMeta.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Cookbook::Roles::ApplicationToInstance:
     file: lib/Moose/Cookbook/Roles/ApplicationToInstance.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Cookbook::Roles::Comparable_CodeReuse:
     file: lib/Moose/Cookbook/Roles/Comparable_CodeReuse.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Cookbook::Roles::Restartable_AdvancedComposition:
     file: lib/Moose/Cookbook/Roles/Restartable_AdvancedComposition.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Cookbook::Snack::Keywords:
     file: lib/Moose/Cookbook/Snack/Keywords.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Cookbook::Snack::Types:
     file: lib/Moose/Cookbook/Snack/Types.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Cookbook::Style:
     file: lib/Moose/Cookbook/Style.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception:
     file: lib/Moose/Exception.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::AccessorMustReadWrite:
     file: lib/Moose/Exception/AccessorMustReadWrite.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::AddParameterizableTypeTakesParameterizableType:
     file: lib/Moose/Exception/AddParameterizableTypeTakesParameterizableType.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::AddRoleTakesAMooseMetaRoleInstance:
     file: lib/Moose/Exception/AddRoleTakesAMooseMetaRoleInstance.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::AddRoleToARoleTakesAMooseMetaRole:
     file: lib/Moose/Exception/AddRoleToARoleTakesAMooseMetaRole.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::ApplyTakesABlessedInstance:
     file: lib/Moose/Exception/ApplyTakesABlessedInstance.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::AttachToClassNeedsAClassMOPClassInstanceOrASubclass:
     file: lib/Moose/Exception/AttachToClassNeedsAClassMOPClassInstanceOrASubclass.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::AttributeConflictInRoles:
     file: lib/Moose/Exception/AttributeConflictInRoles.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::AttributeConflictInSummation:
     file: lib/Moose/Exception/AttributeConflictInSummation.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::AttributeExtensionIsNotSupportedInRoles:
     file: lib/Moose/Exception/AttributeExtensionIsNotSupportedInRoles.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::AttributeIsRequired:
     file: lib/Moose/Exception/AttributeIsRequired.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::AttributeMustBeAnClassMOPMixinAttributeCoreOrSubclass:
     file: lib/Moose/Exception/AttributeMustBeAnClassMOPMixinAttributeCoreOrSubclass.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::AttributeNamesDoNotMatch:
     file: lib/Moose/Exception/AttributeNamesDoNotMatch.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::AttributeValueIsNotAnObject:
     file: lib/Moose/Exception/AttributeValueIsNotAnObject.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::AttributeValueIsNotDefined:
     file: lib/Moose/Exception/AttributeValueIsNotDefined.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::AutoDeRefNeedsArrayRefOrHashRef:
     file: lib/Moose/Exception/AutoDeRefNeedsArrayRefOrHashRef.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::BadOptionFormat:
     file: lib/Moose/Exception/BadOptionFormat.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::BothBuilderAndDefaultAreNotAllowed:
     file: lib/Moose/Exception/BothBuilderAndDefaultAreNotAllowed.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::BuilderDoesNotExist:
     file: lib/Moose/Exception/BuilderDoesNotExist.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::BuilderMethodNotSupportedForAttribute:
     file: lib/Moose/Exception/BuilderMethodNotSupportedForAttribute.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::BuilderMethodNotSupportedForInlineAttribute:
     file: lib/Moose/Exception/BuilderMethodNotSupportedForInlineAttribute.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::BuilderMustBeAMethodName:
     file: lib/Moose/Exception/BuilderMustBeAMethodName.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CallingMethodOnAnImmutableInstance:
     file: lib/Moose/Exception/CallingMethodOnAnImmutableInstance.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CallingReadOnlyMethodOnAnImmutableInstance:
     file: lib/Moose/Exception/CallingReadOnlyMethodOnAnImmutableInstance.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CanExtendOnlyClasses:
     file: lib/Moose/Exception/CanExtendOnlyClasses.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CanOnlyConsumeRole:
     file: lib/Moose/Exception/CanOnlyConsumeRole.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CanOnlyWrapBlessedCode:
     file: lib/Moose/Exception/CanOnlyWrapBlessedCode.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CanReblessOnlyIntoASubclass:
     file: lib/Moose/Exception/CanReblessOnlyIntoASubclass.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CanReblessOnlyIntoASuperclass:
     file: lib/Moose/Exception/CanReblessOnlyIntoASuperclass.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotAddAdditionalTypeCoercionsToUnion:
     file: lib/Moose/Exception/CannotAddAdditionalTypeCoercionsToUnion.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotAddAsAnAttributeToARole:
     file: lib/Moose/Exception/CannotAddAsAnAttributeToARole.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotApplyBaseClassRolesToRole:
     file: lib/Moose/Exception/CannotApplyBaseClassRolesToRole.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotAssignValueToReadOnlyAccessor:
     file: lib/Moose/Exception/CannotAssignValueToReadOnlyAccessor.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotAugmentIfLocalMethodPresent:
     file: lib/Moose/Exception/CannotAugmentIfLocalMethodPresent.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotAugmentNoSuperMethod:
     file: lib/Moose/Exception/CannotAugmentNoSuperMethod.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotAutoDerefWithoutIsa:
     file: lib/Moose/Exception/CannotAutoDerefWithoutIsa.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotAutoDereferenceTypeConstraint:
     file: lib/Moose/Exception/CannotAutoDereferenceTypeConstraint.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotCalculateNativeType:
     file: lib/Moose/Exception/CannotCalculateNativeType.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotCallAnAbstractBaseMethod:
     file: lib/Moose/Exception/CannotCallAnAbstractBaseMethod.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotCallAnAbstractMethod:
     file: lib/Moose/Exception/CannotCallAnAbstractMethod.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotCoerceAWeakRef:
     file: lib/Moose/Exception/CannotCoerceAWeakRef.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotCoerceAttributeWhichHasNoCoercion:
     file: lib/Moose/Exception/CannotCoerceAttributeWhichHasNoCoercion.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotCreateHigherOrderTypeWithoutATypeParameter:
     file: lib/Moose/Exception/CannotCreateHigherOrderTypeWithoutATypeParameter.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresent:
     file: lib/Moose/Exception/CannotCreateMethodAliasLocalMethodIsPresent.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresentInClass:
     file: lib/Moose/Exception/CannotCreateMethodAliasLocalMethodIsPresentInClass.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotDelegateLocalMethodIsPresent:
     file: lib/Moose/Exception/CannotDelegateLocalMethodIsPresent.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotDelegateWithoutIsa:
     file: lib/Moose/Exception/CannotDelegateWithoutIsa.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotFindDelegateMetaclass:
     file: lib/Moose/Exception/CannotFindDelegateMetaclass.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotFindType:
     file: lib/Moose/Exception/CannotFindType.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotFindTypeGivenToMatchOnType:
     file: lib/Moose/Exception/CannotFindTypeGivenToMatchOnType.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotFixMetaclassCompatibility:
     file: lib/Moose/Exception/CannotFixMetaclassCompatibility.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotGenerateInlineConstraint:
     file: lib/Moose/Exception/CannotGenerateInlineConstraint.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotInitializeMooseMetaRoleComposite:
     file: lib/Moose/Exception/CannotInitializeMooseMetaRoleComposite.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotInlineTypeConstraintCheck:
     file: lib/Moose/Exception/CannotInlineTypeConstraintCheck.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotLocatePackageInINC:
     file: lib/Moose/Exception/CannotLocatePackageInINC.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotMakeMetaclassCompatible:
     file: lib/Moose/Exception/CannotMakeMetaclassCompatible.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotOverrideALocalMethod:
     file: lib/Moose/Exception/CannotOverrideALocalMethod.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotOverrideBodyOfMetaMethods:
     file: lib/Moose/Exception/CannotOverrideBodyOfMetaMethods.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotOverrideLocalMethodIsPresent:
     file: lib/Moose/Exception/CannotOverrideLocalMethodIsPresent.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotOverrideNoSuperMethod:
     file: lib/Moose/Exception/CannotOverrideNoSuperMethod.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotRegisterUnnamedTypeConstraint:
     file: lib/Moose/Exception/CannotRegisterUnnamedTypeConstraint.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CannotUseLazyBuildAndDefaultSimultaneously:
     file: lib/Moose/Exception/CannotUseLazyBuildAndDefaultSimultaneously.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CircularReferenceInAlso:
     file: lib/Moose/Exception/CircularReferenceInAlso.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::ClassDoesNotHaveInitMeta:
     file: lib/Moose/Exception/ClassDoesNotHaveInitMeta.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::ClassDoesTheExcludedRole:
     file: lib/Moose/Exception/ClassDoesTheExcludedRole.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::ClassNamesDoNotMatch:
     file: lib/Moose/Exception/ClassNamesDoNotMatch.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CloneObjectExpectsAnInstanceOfMetaclass:
     file: lib/Moose/Exception/CloneObjectExpectsAnInstanceOfMetaclass.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CodeBlockMustBeACodeRef:
     file: lib/Moose/Exception/CodeBlockMustBeACodeRef.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CoercingWithoutCoercions:
     file: lib/Moose/Exception/CoercingWithoutCoercions.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CoercionAlreadyExists:
     file: lib/Moose/Exception/CoercionAlreadyExists.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CoercionNeedsTypeConstraint:
     file: lib/Moose/Exception/CoercionNeedsTypeConstraint.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::ConflictDetectedInCheckRoleExclusions:
     file: lib/Moose/Exception/ConflictDetectedInCheckRoleExclusions.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::ConflictDetectedInCheckRoleExclusionsInToClass:
     file: lib/Moose/Exception/ConflictDetectedInCheckRoleExclusionsInToClass.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::ConstructClassInstanceTakesPackageName:
     file: lib/Moose/Exception/ConstructClassInstanceTakesPackageName.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CouldNotCreateMethod:
     file: lib/Moose/Exception/CouldNotCreateMethod.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CouldNotCreateWriter:
     file: lib/Moose/Exception/CouldNotCreateWriter.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CouldNotEvalConstructor:
     file: lib/Moose/Exception/CouldNotEvalConstructor.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CouldNotEvalDestructor:
     file: lib/Moose/Exception/CouldNotEvalDestructor.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CouldNotFindTypeConstraintToCoerceFrom:
     file: lib/Moose/Exception/CouldNotFindTypeConstraintToCoerceFrom.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CouldNotGenerateInlineAttributeMethod:
     file: lib/Moose/Exception/CouldNotGenerateInlineAttributeMethod.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CouldNotLocateTypeConstraintForUnion:
     file: lib/Moose/Exception/CouldNotLocateTypeConstraintForUnion.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CouldNotParseType:
     file: lib/Moose/Exception/CouldNotParseType.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CreateMOPClassTakesArrayRefOfAttributes:
     file: lib/Moose/Exception/CreateMOPClassTakesArrayRefOfAttributes.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CreateMOPClassTakesArrayRefOfSuperclasses:
     file: lib/Moose/Exception/CreateMOPClassTakesArrayRefOfSuperclasses.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CreateMOPClassTakesHashRefOfMethods:
     file: lib/Moose/Exception/CreateMOPClassTakesHashRefOfMethods.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CreateTakesArrayRefOfRoles:
     file: lib/Moose/Exception/CreateTakesArrayRefOfRoles.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CreateTakesHashRefOfAttributes:
     file: lib/Moose/Exception/CreateTakesHashRefOfAttributes.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::CreateTakesHashRefOfMethods:
     file: lib/Moose/Exception/CreateTakesHashRefOfMethods.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::DefaultToMatchOnTypeMustBeCodeRef:
     file: lib/Moose/Exception/DefaultToMatchOnTypeMustBeCodeRef.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::DelegationToAClassWhichIsNotLoaded:
     file: lib/Moose/Exception/DelegationToAClassWhichIsNotLoaded.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::DelegationToARoleWhichIsNotLoaded:
     file: lib/Moose/Exception/DelegationToARoleWhichIsNotLoaded.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::DelegationToATypeWhichIsNotAClass:
     file: lib/Moose/Exception/DelegationToATypeWhichIsNotAClass.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::DoesRequiresRoleName:
     file: lib/Moose/Exception/DoesRequiresRoleName.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::EnumCalledWithAnArrayRefAndAdditionalArgs:
     file: lib/Moose/Exception/EnumCalledWithAnArrayRefAndAdditionalArgs.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::EnumValuesMustBeString:
     file: lib/Moose/Exception/EnumValuesMustBeString.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::ExtendsMissingArgs:
     file: lib/Moose/Exception/ExtendsMissingArgs.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::HandlesMustBeAHashRef:
     file: lib/Moose/Exception/HandlesMustBeAHashRef.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::IllegalInheritedOptions:
     file: lib/Moose/Exception/IllegalInheritedOptions.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::IllegalMethodTypeToAddMethodModifier:
     file: lib/Moose/Exception/IllegalMethodTypeToAddMethodModifier.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::IncompatibleMetaclassOfSuperclass:
     file: lib/Moose/Exception/IncompatibleMetaclassOfSuperclass.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::InitMetaRequiresClass:
     file: lib/Moose/Exception/InitMetaRequiresClass.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::InitializeTakesUnBlessedPackageName:
     file: lib/Moose/Exception/InitializeTakesUnBlessedPackageName.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::InstanceBlessedIntoWrongClass:
     file: lib/Moose/Exception/InstanceBlessedIntoWrongClass.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::InstanceMustBeABlessedReference:
     file: lib/Moose/Exception/InstanceMustBeABlessedReference.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::InvalidArgPassedToMooseUtilMetaRole:
     file: lib/Moose/Exception/InvalidArgPassedToMooseUtilMetaRole.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::InvalidArgumentToMethod:
     file: lib/Moose/Exception/InvalidArgumentToMethod.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::InvalidArgumentsToTraitAliases:
     file: lib/Moose/Exception/InvalidArgumentsToTraitAliases.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::InvalidBaseTypeGivenToCreateParameterizedTypeConstraint:
     file: lib/Moose/Exception/InvalidBaseTypeGivenToCreateParameterizedTypeConstraint.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::InvalidHandleValue:
     file: lib/Moose/Exception/InvalidHandleValue.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::InvalidHasProvidedInARole:
     file: lib/Moose/Exception/InvalidHasProvidedInARole.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::InvalidNameForType:
     file: lib/Moose/Exception/InvalidNameForType.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::InvalidRoleApplication:
     file: lib/Moose/Exception/InvalidRoleApplication.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::InvalidTypeConstraint:
     file: lib/Moose/Exception/InvalidTypeConstraint.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::InvalidTypeGivenToCreateParameterizedTypeConstraint:
     file: lib/Moose/Exception/InvalidTypeGivenToCreateParameterizedTypeConstraint.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::InvalidValueForIs:
     file: lib/Moose/Exception/InvalidValueForIs.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::IsaDoesNotDoTheRole:
     file: lib/Moose/Exception/IsaDoesNotDoTheRole.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::IsaLacksDoesMethod:
     file: lib/Moose/Exception/IsaLacksDoesMethod.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::LazyAttributeNeedsADefault:
     file: lib/Moose/Exception/LazyAttributeNeedsADefault.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::Legacy:
     file: lib/Moose/Exception/Legacy.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MOPAttributeNewNeedsAttributeName:
     file: lib/Moose/Exception/MOPAttributeNewNeedsAttributeName.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MatchActionMustBeACodeRef:
     file: lib/Moose/Exception/MatchActionMustBeACodeRef.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MessageParameterMustBeCodeRef:
     file: lib/Moose/Exception/MessageParameterMustBeCodeRef.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MetaclassIsAClassNotASubclassOfGivenMetaclass:
     file: lib/Moose/Exception/MetaclassIsAClassNotASubclassOfGivenMetaclass.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MetaclassIsARoleNotASubclassOfGivenMetaclass:
     file: lib/Moose/Exception/MetaclassIsARoleNotASubclassOfGivenMetaclass.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MetaclassIsNotASubclassOfGivenMetaclass:
     file: lib/Moose/Exception/MetaclassIsNotASubclassOfGivenMetaclass.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MetaclassMustBeASubclassOfMooseMetaClass:
     file: lib/Moose/Exception/MetaclassMustBeASubclassOfMooseMetaClass.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MetaclassMustBeASubclassOfMooseMetaRole:
     file: lib/Moose/Exception/MetaclassMustBeASubclassOfMooseMetaRole.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MetaclassMustBeDerivedFromClassMOPClass:
     file: lib/Moose/Exception/MetaclassMustBeDerivedFromClassMOPClass.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MetaclassNotLoaded:
     file: lib/Moose/Exception/MetaclassNotLoaded.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MetaclassTypeIncompatible:
     file: lib/Moose/Exception/MetaclassTypeIncompatible.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MethodExpectedAMetaclassObject:
     file: lib/Moose/Exception/MethodExpectedAMetaclassObject.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MethodExpectsFewerArgs:
     file: lib/Moose/Exception/MethodExpectsFewerArgs.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MethodExpectsMoreArgs:
     file: lib/Moose/Exception/MethodExpectsMoreArgs.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MethodModifierNeedsMethodName:
     file: lib/Moose/Exception/MethodModifierNeedsMethodName.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MethodNameConflictInRoles:
     file: lib/Moose/Exception/MethodNameConflictInRoles.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MethodNameNotFoundInInheritanceHierarchy:
     file: lib/Moose/Exception/MethodNameNotFoundInInheritanceHierarchy.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MethodNameNotGiven:
     file: lib/Moose/Exception/MethodNameNotGiven.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MustDefineAMethodName:
     file: lib/Moose/Exception/MustDefineAMethodName.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MustDefineAnAttributeName:
     file: lib/Moose/Exception/MustDefineAnAttributeName.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MustHaveAtLeastOneValueToEnumerate:
     file: lib/Moose/Exception/MustHaveAtLeastOneValueToEnumerate.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MustPassAHashOfOptions:
     file: lib/Moose/Exception/MustPassAHashOfOptions.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MustPassAMooseMetaRoleInstanceOrSubclass:
     file: lib/Moose/Exception/MustPassAMooseMetaRoleInstanceOrSubclass.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MustPassAPackageNameOrAnExistingClassMOPPackageInstance:
     file: lib/Moose/Exception/MustPassAPackageNameOrAnExistingClassMOPPackageInstance.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MustPassEvenNumberOfArguments:
     file: lib/Moose/Exception/MustPassEvenNumberOfArguments.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MustPassEvenNumberOfAttributeOptions:
     file: lib/Moose/Exception/MustPassEvenNumberOfAttributeOptions.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MustProvideANameForTheAttribute:
     file: lib/Moose/Exception/MustProvideANameForTheAttribute.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MustSpecifyAtleastOneMethod:
     file: lib/Moose/Exception/MustSpecifyAtleastOneMethod.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MustSpecifyAtleastOneRole:
     file: lib/Moose/Exception/MustSpecifyAtleastOneRole.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MustSpecifyAtleastOneRoleToApplicant:
     file: lib/Moose/Exception/MustSpecifyAtleastOneRoleToApplicant.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MustSupplyAClassMOPAttributeInstance:
     file: lib/Moose/Exception/MustSupplyAClassMOPAttributeInstance.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MustSupplyADelegateToMethod:
     file: lib/Moose/Exception/MustSupplyADelegateToMethod.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MustSupplyAMetaclass:
     file: lib/Moose/Exception/MustSupplyAMetaclass.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MustSupplyAMooseMetaAttributeInstance:
     file: lib/Moose/Exception/MustSupplyAMooseMetaAttributeInstance.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MustSupplyAnAccessorTypeToConstructWith:
     file: lib/Moose/Exception/MustSupplyAnAccessorTypeToConstructWith.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MustSupplyAnAttributeToConstructWith:
     file: lib/Moose/Exception/MustSupplyAnAttributeToConstructWith.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MustSupplyArrayRefAsCurriedArguments:
     file: lib/Moose/Exception/MustSupplyArrayRefAsCurriedArguments.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::MustSupplyPackageNameAndName:
     file: lib/Moose/Exception/MustSupplyPackageNameAndName.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::NeedsTypeConstraintUnionForTypeCoercionUnion:
     file: lib/Moose/Exception/NeedsTypeConstraintUnionForTypeCoercionUnion.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::NeitherAttributeNorAttributeNameIsGiven:
     file: lib/Moose/Exception/NeitherAttributeNorAttributeNameIsGiven.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::NeitherClassNorClassNameIsGiven:
     file: lib/Moose/Exception/NeitherClassNorClassNameIsGiven.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::NeitherRoleNorRoleNameIsGiven:
     file: lib/Moose/Exception/NeitherRoleNorRoleNameIsGiven.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::NeitherTypeNorTypeNameIsGiven:
     file: lib/Moose/Exception/NeitherTypeNorTypeNameIsGiven.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::NoAttributeFoundInSuperClass:
     file: lib/Moose/Exception/NoAttributeFoundInSuperClass.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::NoBodyToInitializeInAnAbstractBaseClass:
     file: lib/Moose/Exception/NoBodyToInitializeInAnAbstractBaseClass.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::NoCasesMatched:
     file: lib/Moose/Exception/NoCasesMatched.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::NoConstraintCheckForTypeConstraint:
     file: lib/Moose/Exception/NoConstraintCheckForTypeConstraint.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::NoDestructorClassSpecified:
     file: lib/Moose/Exception/NoDestructorClassSpecified.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::NoImmutableTraitSpecifiedForClass:
     file: lib/Moose/Exception/NoImmutableTraitSpecifiedForClass.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::NoParentGivenToSubtype:
     file: lib/Moose/Exception/NoParentGivenToSubtype.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::OnlyInstancesCanBeCloned:
     file: lib/Moose/Exception/OnlyInstancesCanBeCloned.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::OperatorIsRequired:
     file: lib/Moose/Exception/OperatorIsRequired.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::OverrideConflictInComposition:
     file: lib/Moose/Exception/OverrideConflictInComposition.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::OverrideConflictInSummation:
     file: lib/Moose/Exception/OverrideConflictInSummation.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::PackageDoesNotUseMooseExporter:
     file: lib/Moose/Exception/PackageDoesNotUseMooseExporter.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::PackageNameAndNameParamsNotGivenToWrap:
     file: lib/Moose/Exception/PackageNameAndNameParamsNotGivenToWrap.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::PackagesAndModulesAreNotCachable:
     file: lib/Moose/Exception/PackagesAndModulesAreNotCachable.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::ParameterIsNotSubtypeOfParent:
     file: lib/Moose/Exception/ParameterIsNotSubtypeOfParent.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::ReferencesAreNotAllowedAsDefault:
     file: lib/Moose/Exception/ReferencesAreNotAllowedAsDefault.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::RequiredAttributeLacksInitialization:
     file: lib/Moose/Exception/RequiredAttributeLacksInitialization.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::RequiredAttributeNeedsADefault:
     file: lib/Moose/Exception/RequiredAttributeNeedsADefault.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::RequiredMethodsImportedByClass:
     file: lib/Moose/Exception/RequiredMethodsImportedByClass.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::RequiredMethodsNotImplementedByClass:
     file: lib/Moose/Exception/RequiredMethodsNotImplementedByClass.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::Role::Attribute:
     file: lib/Moose/Exception/Role/Attribute.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::Role::AttributeName:
     file: lib/Moose/Exception/Role/AttributeName.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::Role::Class:
     file: lib/Moose/Exception/Role/Class.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::Role::EitherAttributeOrAttributeName:
     file: lib/Moose/Exception/Role/EitherAttributeOrAttributeName.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::Role::Instance:
     file: lib/Moose/Exception/Role/Instance.pm
-    version: '2.1204'
+    version: '2.1210'
+  Moose::Exception::Role::InstanceClass:
+    file: lib/Moose/Exception/Role/InstanceClass.pm
+    version: '2.1210'
   Moose::Exception::Role::InvalidAttributeOptions:
     file: lib/Moose/Exception/Role/InvalidAttributeOptions.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::Role::Method:
     file: lib/Moose/Exception/Role/Method.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::Role::ParamsHash:
     file: lib/Moose/Exception/Role/ParamsHash.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::Role::Role:
     file: lib/Moose/Exception/Role/Role.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::Role::RoleForCreate:
     file: lib/Moose/Exception/Role/RoleForCreate.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::Role::RoleForCreateMOPClass:
     file: lib/Moose/Exception/Role/RoleForCreateMOPClass.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::Role::TypeConstraint:
     file: lib/Moose/Exception/Role/TypeConstraint.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::RoleDoesTheExcludedRole:
     file: lib/Moose/Exception/RoleDoesTheExcludedRole.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::RoleExclusionConflict:
     file: lib/Moose/Exception/RoleExclusionConflict.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::RoleNameRequired:
     file: lib/Moose/Exception/RoleNameRequired.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::RoleNameRequiredForMooseMetaRole:
     file: lib/Moose/Exception/RoleNameRequiredForMooseMetaRole.pm
-    version: '2.1204'
-  Moose::Exception::RoleNamesDoNotMatch:
-    file: lib/Moose/Exception/RoleNamesDoNotMatch.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::RolesDoNotSupportAugment:
     file: lib/Moose/Exception/RolesDoNotSupportAugment.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::RolesDoNotSupportExtends:
     file: lib/Moose/Exception/RolesDoNotSupportExtends.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::RolesDoNotSupportInner:
     file: lib/Moose/Exception/RolesDoNotSupportInner.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::RolesDoNotSupportRegexReferencesForMethodModifiers:
     file: lib/Moose/Exception/RolesDoNotSupportRegexReferencesForMethodModifiers.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::RolesInCreateTakesAnArrayRef:
     file: lib/Moose/Exception/RolesInCreateTakesAnArrayRef.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::RolesListMustBeInstancesOfMooseMetaRole:
     file: lib/Moose/Exception/RolesListMustBeInstancesOfMooseMetaRole.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::SingleParamsToNewMustBeHashRef:
     file: lib/Moose/Exception/SingleParamsToNewMustBeHashRef.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::TriggerMustBeACodeRef:
     file: lib/Moose/Exception/TriggerMustBeACodeRef.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::TypeConstraintCannotBeUsedForAParameterizableType:
     file: lib/Moose/Exception/TypeConstraintCannotBeUsedForAParameterizableType.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::TypeConstraintIsAlreadyCreated:
     file: lib/Moose/Exception/TypeConstraintIsAlreadyCreated.pm
-    version: '2.1204'
-  Moose::Exception::TypeNamesDoNotMatch:
-    file: lib/Moose/Exception/TypeNamesDoNotMatch.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::TypeParameterMustBeMooseMetaType:
     file: lib/Moose/Exception/TypeParameterMustBeMooseMetaType.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::UnableToCanonicalizeHandles:
     file: lib/Moose/Exception/UnableToCanonicalizeHandles.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::UnableToCanonicalizeNonRolePackage:
     file: lib/Moose/Exception/UnableToCanonicalizeNonRolePackage.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::UnableToRecognizeDelegateMetaclass:
     file: lib/Moose/Exception/UnableToRecognizeDelegateMetaclass.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::UndefinedHashKeysPassedToMethod:
     file: lib/Moose/Exception/UndefinedHashKeysPassedToMethod.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::UnionCalledWithAnArrayRefAndAdditionalArgs:
     file: lib/Moose/Exception/UnionCalledWithAnArrayRefAndAdditionalArgs.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::UnionTakesAtleastTwoTypeNames:
     file: lib/Moose/Exception/UnionTakesAtleastTwoTypeNames.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::ValidationFailedForInlineTypeConstraint:
     file: lib/Moose/Exception/ValidationFailedForInlineTypeConstraint.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::ValidationFailedForTypeConstraint:
     file: lib/Moose/Exception/ValidationFailedForTypeConstraint.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::WrapTakesACodeRefToBless:
     file: lib/Moose/Exception/WrapTakesACodeRefToBless.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exception::WrongTypeConstraintGiven:
     file: lib/Moose/Exception/WrongTypeConstraintGiven.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Exporter:
     file: lib/Moose/Exporter.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Intro:
     file: lib/Moose/Intro.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Manual:
     file: lib/Moose/Manual.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Manual::Attributes:
     file: lib/Moose/Manual/Attributes.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Manual::BestPractices:
     file: lib/Moose/Manual/BestPractices.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Manual::Classes:
     file: lib/Moose/Manual/Classes.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Manual::Concepts:
     file: lib/Moose/Manual/Concepts.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Manual::Construction:
     file: lib/Moose/Manual/Construction.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Manual::Contributing:
     file: lib/Moose/Manual/Contributing.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Manual::Delegation:
     file: lib/Moose/Manual/Delegation.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Manual::Delta:
     file: lib/Moose/Manual/Delta.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Manual::Exceptions:
     file: lib/Moose/Manual/Exceptions.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Manual::Exceptions::Manifest:
     file: lib/Moose/Manual/Exceptions/Manifest.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Manual::FAQ:
     file: lib/Moose/Manual/FAQ.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Manual::MOP:
     file: lib/Moose/Manual/MOP.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Manual::MethodModifiers:
     file: lib/Moose/Manual/MethodModifiers.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Manual::MooseX:
     file: lib/Moose/Manual/MooseX.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Manual::Roles:
     file: lib/Moose/Manual/Roles.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Manual::Support:
     file: lib/Moose/Manual/Support.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Manual::Types:
     file: lib/Moose/Manual/Types.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Manual::Unsweetened:
     file: lib/Moose/Manual/Unsweetened.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::Attribute:
     file: lib/Moose/Meta/Attribute.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::Attribute::Custom::Moose:
     file: lib/Moose/Meta/Attribute.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::Attribute::Native:
     file: lib/Moose/Meta/Attribute/Native.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::Attribute::Native::Trait::Array:
     file: lib/Moose/Meta/Attribute/Native/Trait/Array.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::Attribute::Native::Trait::Bool:
     file: lib/Moose/Meta/Attribute/Native/Trait/Bool.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::Attribute::Native::Trait::Code:
     file: lib/Moose/Meta/Attribute/Native/Trait/Code.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::Attribute::Native::Trait::Counter:
     file: lib/Moose/Meta/Attribute/Native/Trait/Counter.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::Attribute::Native::Trait::Hash:
     file: lib/Moose/Meta/Attribute/Native/Trait/Hash.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::Attribute::Native::Trait::Number:
     file: lib/Moose/Meta/Attribute/Native/Trait/Number.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::Attribute::Native::Trait::String:
     file: lib/Moose/Meta/Attribute/Native/Trait/String.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::Class:
     file: lib/Moose/Meta/Class.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::Instance:
     file: lib/Moose/Meta/Instance.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::Method:
     file: lib/Moose/Meta/Method.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::Method::Accessor:
     file: lib/Moose/Meta/Method/Accessor.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::Method::Augmented:
     file: lib/Moose/Meta/Method/Augmented.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::Method::Constructor:
     file: lib/Moose/Meta/Method/Constructor.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::Method::Delegation:
     file: lib/Moose/Meta/Method/Delegation.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::Method::Destructor:
     file: lib/Moose/Meta/Method/Destructor.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::Method::Meta:
     file: lib/Moose/Meta/Method/Meta.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::Method::Overridden:
     file: lib/Moose/Meta/Method/Overridden.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::Role:
     file: lib/Moose/Meta/Role.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::Role::Application:
     file: lib/Moose/Meta/Role/Application.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::Role::Application::RoleSummation:
     file: lib/Moose/Meta/Role/Application/RoleSummation.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::Role::Application::ToClass:
     file: lib/Moose/Meta/Role/Application/ToClass.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::Role::Application::ToInstance:
     file: lib/Moose/Meta/Role/Application/ToInstance.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::Role::Application::ToRole:
     file: lib/Moose/Meta/Role/Application/ToRole.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::Role::Attribute:
     file: lib/Moose/Meta/Role/Attribute.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::Role::Composite:
     file: lib/Moose/Meta/Role/Composite.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::Role::Method:
     file: lib/Moose/Meta/Role/Method.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::Role::Method::Conflicting:
     file: lib/Moose/Meta/Role/Method/Conflicting.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::Role::Method::Required:
     file: lib/Moose/Meta/Role/Method/Required.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::TypeCoercion:
     file: lib/Moose/Meta/TypeCoercion.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::TypeCoercion::Union:
     file: lib/Moose/Meta/TypeCoercion/Union.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::TypeConstraint:
     file: lib/Moose/Meta/TypeConstraint.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::TypeConstraint::Class:
     file: lib/Moose/Meta/TypeConstraint/Class.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::TypeConstraint::DuckType:
     file: lib/Moose/Meta/TypeConstraint/DuckType.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::TypeConstraint::Enum:
     file: lib/Moose/Meta/TypeConstraint/Enum.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::TypeConstraint::Parameterizable:
     file: lib/Moose/Meta/TypeConstraint/Parameterizable.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::TypeConstraint::Parameterized:
     file: lib/Moose/Meta/TypeConstraint/Parameterized.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::TypeConstraint::Registry:
     file: lib/Moose/Meta/TypeConstraint/Registry.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::TypeConstraint::Role:
     file: lib/Moose/Meta/TypeConstraint/Role.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Meta::TypeConstraint::Union:
     file: lib/Moose/Meta/TypeConstraint/Union.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Object:
     file: lib/Moose/Object.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Role:
     file: lib/Moose/Role.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Spec::Role:
     file: lib/Moose/Spec/Role.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Unsweetened:
     file: lib/Moose/Unsweetened.pod
-    version: '2.1204'
+    version: '2.1210'
   Moose::Util:
     file: lib/Moose/Util.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Util::MetaRole:
     file: lib/Moose/Util/MetaRole.pm
-    version: '2.1204'
+    version: '2.1210'
   Moose::Util::TypeConstraints:
     file: lib/Moose/Util/TypeConstraints.pm
-    version: '2.1204'
+    version: '2.1210'
   Test::Moose:
     file: lib/Test/Moose.pm
-    version: '2.1204'
+    version: '2.1210'
   metaclass:
     file: lib/metaclass.pm
-    version: '2.1204'
+    version: '2.1210'
   oose:
     file: lib/oose.pm
-    version: '2.1204'
+    version: '2.1210'
 recommends:
   Devel::PartialDump: '0.14'
 requires:
@@ -1096,15 +1095,15 @@ resources:
   bugtracker: https://rt.cpan.org/Dist/Display.html?Name=Moose
   homepage: http://moose.perl.org/
   repository: git://github.com/moose/Moose.git
-version: '2.1204'
+version: '2.1210'
 x_Dist_Zilla:
   perl:
-    version: '5.019007'
+    version: '5.021001'
   plugins:
     -
-      class: inc::RequireAuthorDeps
-      name: =inc::RequireAuthorDeps
-      version: ~
+      class: Dist::Zilla::Plugin::EnsurePrereqsInstalled
+      name: EnsurePrereqsInstalled
+      version: '0.004'
     -
       class: inc::Clean
       name: =inc::Clean
@@ -1112,67 +1111,58 @@ x_Dist_Zilla:
     -
       class: Dist::Zilla::Plugin::GatherDir
       name: GatherDir
-      version: '5.012'
+      version: '5.019'
     -
       class: Dist::Zilla::Plugin::PruneCruft
       name: PruneCruft
-      version: '5.012'
+      version: '5.019'
     -
       class: Dist::Zilla::Plugin::ManifestSkip
       name: ManifestSkip
-      version: '5.012'
+      version: '5.019'
     -
       class: Dist::Zilla::Plugin::MetaYAML
       name: MetaYAML
-      version: '5.012'
+      version: '5.019'
     -
       class: Dist::Zilla::Plugin::MetaJSON
       name: MetaJSON
-      version: '5.012'
+      version: '5.019'
     -
       class: Dist::Zilla::Plugin::License
       name: License
-      version: '5.012'
+      version: '5.019'
     -
       class: Dist::Zilla::Plugin::ExecDir
       name: ExecDir
-      version: '5.012'
+      version: '5.019'
     -
       class: Dist::Zilla::Plugin::ShareDir
       name: ShareDir
-      version: '5.012'
+      version: '5.019'
     -
       class: inc::MakeMaker
+      config:
+        Dist::Zilla::Role::TestRunner:
+          default_jobs: '9'
       name: =inc::MakeMaker
       version: ~
     -
       class: Dist::Zilla::Plugin::Manifest
       name: Manifest
-      version: '5.012'
-    -
-      class: Dist::Zilla::Plugin::TestRelease
-      name: TestRelease
-      version: '5.012'
-    -
-      class: Dist::Zilla::Plugin::UploadToCPAN
-      name: UploadToCPAN
-      version: '5.012'
+      version: '5.019'
     -
       class: Dist::Zilla::Plugin::NextRelease
       name: NextRelease
-      version: '5.012'
-    -
-      class: Dist::Zilla::Plugin::PruneFiles
-      name: PruneFiles
-      version: '5.012'
+      version: '5.019'
     -
       class: Dist::Zilla::Plugin::PkgVersion
       name: PkgVersion
-      version: '5.012'
+      version: '5.019'
     -
       class: Dist::Zilla::Plugin::MetaConfig
       name: MetaConfig
-      version: '5.012'
+      version: '5.019'
     -
       class: Dist::Zilla::Plugin::Authority
       name: Authority
@@ -1180,18 +1170,30 @@ x_Dist_Zilla:
     -
       class: Dist::Zilla::Plugin::MetaResources
       name: MetaResources
-      version: '5.012'
+      version: '5.019'
+    -
+      class: Dist::Zilla::Plugin::FileFinder::ByName
+      name: PodModules
+      version: '5.019'
+    -
+      class: Dist::Zilla::Plugin::FileFinder::Filter
+      name: ModulesSansPod
+      version: '5.019'
+    -
+      class: inc::SimpleProvides
+      name: =inc::SimpleProvides
+      version: ~
     -
       class: Dist::Zilla::Plugin::MetaProvides::Package
       config:
         Dist::Zilla::Plugin::MetaProvides::Package:
           finder:
-            - ':InstallModules'
+            - ModulesSansPod
           finder_objects:
             -
-              class: Dist::Zilla::Plugin::FinderCode
-              name: ':InstallModules'
-              version: '5.012'
+              class: Dist::Zilla::Plugin::FileFinder::Filter
+              name: ModulesSansPod
+              version: '5.019'
         Dist::Zilla::Role::MetaProvider::Provider:
           inherit_missing: '1'
           inherit_version: '1'
@@ -1201,7 +1203,7 @@ x_Dist_Zilla:
     -
       class: Dist::Zilla::Plugin::MetaNoIndex
       name: MetaNoIndex
-      version: '5.012'
+      version: '5.019'
     -
       class: Dist::Zilla::Plugin::SurgicalPodWeaver
       config:
@@ -1290,7 +1292,7 @@ x_Dist_Zilla:
           phase: release
           skip: []
       name: PromptIfStale
-      version: '0.015'
+      version: '0.023'
     -
       class: Dist::Zilla::Plugin::EOLTests
       name: EOLTests
@@ -1298,21 +1300,21 @@ x_Dist_Zilla:
     -
       class: Dist::Zilla::Plugin::PodSyntaxTests
       name: PodSyntaxTests
-      version: '5.012'
+      version: '5.019'
     -
       class: Dist::Zilla::Plugin::Test::NoTabs
       config:
         Dist::Zilla::Plugin::Test::NoTabs:
-          module_finder:
+          finder:
             - ':InstallModules'
-          script_finder:
             - ':ExecFiles'
+            - ':TestFiles'
       name: Test::NoTabs
-      version: '0.06'
+      version: '0.08'
     -
       class: Dist::Zilla::Plugin::MetaTests
       name: MetaTests
-      version: '5.012'
+      version: '5.019'
     -
       class: Dist::Zilla::Plugin::Test::Kwalitee
       name: Test::Kwalitee
@@ -1320,11 +1322,14 @@ x_Dist_Zilla:
     -
       class: Dist::Zilla::Plugin::MojibakeTests
       name: MojibakeTests
-      version: '0.5'
+      version: '0.7'
     -
       class: Dist::Zilla::Plugin::RunExtraTests
+      config:
+        Dist::Zilla::Role::TestRunner:
+          default_jobs: '9'
       name: RunExtraTests
-      version: '0.016'
+      version: '0.021'
     -
       class: Dist::Zilla::Plugin::Test::ReportPrereqs
       name: Test::ReportPrereqs
@@ -1337,13 +1342,17 @@ x_Dist_Zilla:
       class: Dist::Zilla::Plugin::Test::Compile
       config:
         Dist::Zilla::Plugin::Test::Compile:
-          filename: xt/author/00-compile.t
+          filename: xt/release/00-compile.t
           module_finder:
             - ':InstallModules'
           script_finder:
             - ':ExecFiles'
       name: Test::Compile
-      version: '2.039'
+      version: '2.043'
+    -
+      class: Dist::Zilla::Plugin::CheckVersionIncrement
+      name: CheckVersionIncrement
+      version: '0.121750'
     -
       class: Dist::Zilla::Plugin::CheckChangesHasContent
       name: CheckChangesHasContent
@@ -1355,7 +1364,7 @@ x_Dist_Zilla:
           phase: runtime
           type: requires
       name: Prereqs
-      version: '5.012'
+      version: '5.019'
     -
       class: Dist::Zilla::Plugin::Prereqs
       config:
@@ -1363,7 +1372,7 @@ x_Dist_Zilla:
           phase: test
           type: requires
       name: TestRequires
-      version: '5.012'
+      version: '5.019'
     -
       class: Dist::Zilla::Plugin::Prereqs
       config:
@@ -1371,11 +1380,11 @@ x_Dist_Zilla:
           phase: configure
           type: requires
       name: ConfigureRequires
-      version: '5.012'
+      version: '5.019'
     -
       class: Dist::Zilla::Plugin::Prereqs::AuthorDeps
       name: Prereqs::AuthorDeps
-      version: '0.002'
+      version: '0.003'
     -
       class: Dist::Zilla::Plugin::Prereqs
       config:
@@ -1383,7 +1392,7 @@ x_Dist_Zilla:
           phase: develop
           type: requires
       name: DevelopRequires
-      version: '5.012'
+      version: '5.019'
     -
       class: Dist::Zilla::Plugin::Prereqs
       config:
@@ -1391,19 +1400,15 @@ x_Dist_Zilla:
           phase: runtime
           type: recommends
       name: RuntimeRecommends
-      version: '5.012'
-    -
-      class: Dist::Zilla::Plugin::Prereqs
-      config:
-        Dist::Zilla::Plugin::Prereqs:
-          phase: develop
-          type: conflicts
-      name: DevelopConflicts
-      version: '5.012'
+      version: '5.019'
     -
       class: Dist::Zilla::Plugin::Conflicts
       name: Conflicts
-      version: '0.13'
+      version: '0.14'
+    -
+      class: Dist::Zilla::Plugin::Test::CheckBreaks
+      name: Test::CheckBreaks
+      version: '0.009'
     -
       class: inc::CheckDelta
       name: =inc::CheckDelta
@@ -1418,32 +1423,81 @@ x_Dist_Zilla:
       version: 0.2.0
     -
       class: Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch
+      config:
+        Dist::Zilla::Role::Git::Repo:
+          repo_root: .
       name: Git::CheckFor::CorrectBranch
-      version: '0.009'
+      version: '0.011'
     -
       class: Dist::Zilla::Plugin::Git::Check
+      config:
+        Dist::Zilla::Plugin::Git::Check:
+          untracked_files: die
+        Dist::Zilla::Role::Git::DirtyFiles:
+          allow_dirty: []
+          allow_dirty_match: []
+          changelog: Changes
+        Dist::Zilla::Role::Git::Repo:
+          repo_root: .
       name: Git::Check
-      version: '2.019'
+      version: '2.023'
+    -
+      class: Dist::Zilla::Plugin::TestRelease
+      name: TestRelease
+      version: '5.019'
     -
       class: Dist::Zilla::Plugin::ConfirmRelease
       name: ConfirmRelease
-      version: '5.012'
+      version: '5.019'
     -
       class: Dist::Zilla::Plugin::Git::Commit
+      config:
+        Dist::Zilla::Plugin::Git::Commit:
+          add_files_in: []
+          commit_msg: 'changelog for %N-%v%t'
+          time_zone: local
+        Dist::Zilla::Role::Git::DirtyFiles:
+          allow_dirty:
+            - Changes
+          allow_dirty_match: []
+          changelog: Changes
+        Dist::Zilla::Role::Git::Repo:
+          repo_root: .
       name: Git::Commit
-      version: '2.019'
+      version: '2.023'
     -
       class: Dist::Zilla::Plugin::Git::Tag
+      config:
+        Dist::Zilla::Plugin::Git::Tag:
+          branch: ~
+          signed: 0
+          tag: '2.1210'
+          tag_format: '%v'
+          tag_message: '%v%t'
+          time_zone: local
+        Dist::Zilla::Role::Git::Repo:
+          repo_root: .
       name: Git::Tag
-      version: '2.019'
+      version: '2.023'
     -
       class: Dist::Zilla::Plugin::Git::Push
+      config:
+        Dist::Zilla::Plugin::Git::Push:
+          push_to:
+            - origin
+          remotes_must_exist: 1
+        Dist::Zilla::Role::Git::Repo:
+          repo_root: .
       name: Git::Push
-      version: '2.019'
+      version: '2.023'
+    -
+      class: Dist::Zilla::Plugin::UploadToCPAN
+      name: UploadToCPAN
+      version: '5.019'
     -
       class: Dist::Zilla::Plugin::ContributorsFromGit
       name: ContributorsFromGit
-      version: '0.006'
+      version: '0.013'
     -
       class: inc::GenerateDocs
       name: =inc::GenerateDocs
@@ -1451,107 +1505,107 @@ x_Dist_Zilla:
     -
       class: Dist::Zilla::Plugin::FinderCode
       name: ':InstallModules'
-      version: '5.012'
+      version: '5.019'
     -
       class: Dist::Zilla::Plugin::FinderCode
       name: ':IncModules'
-      version: '5.012'
+      version: '5.019'
     -
       class: Dist::Zilla::Plugin::FinderCode
       name: ':TestFiles'
-      version: '5.012'
+      version: '5.019'
     -
       class: Dist::Zilla::Plugin::FinderCode
       name: ':ExecFiles'
-      version: '5.012'
+      version: '5.019'
     -
       class: Dist::Zilla::Plugin::FinderCode
       name: ':ShareFiles'
-      version: '5.012'
+      version: '5.019'
     -
       class: Dist::Zilla::Plugin::FinderCode
       name: ':MainModule'
-      version: '5.012'
+      version: '5.019'
     -
       class: Dist::Zilla::Plugin::FinderCode
       name: ':AllFiles'
-      version: '5.012'
+      version: '5.019'
     -
       class: Dist::Zilla::Plugin::FinderCode
       name: ':NoFiles'
-      version: '5.012'
+      version: '5.019'
   zilla:
     class: Dist::Zilla::Dist::Builder
     config:
       is_trial: '0'
-    version: '5.012'
+    version: '5.019'
 x_authority: cpan:STEVAN
 x_breaks:
-  Catalyst: '5.90049999'
-  Config::MVP: '2.200004'
-  Devel::REPL: '1.003020'
-  Dist::Zilla::Plugin::Git: '2.016'
-  Fey: '0.36'
-  Fey::ORM: '0.42'
-  File::ChangeNotify: '0.15'
-  HTTP::Throwable: '0.017'
-  KiokuDB: '0.51'
-  Markdent: '0.16'
-  Mason: '2.18'
-  MooseX::ABC: '0.05'
-  MooseX::Aliases: '0.08'
-  MooseX::AlwaysCoerce: '0.13'
-  MooseX::App: '1.22'
-  MooseX::Attribute::Deflator: 2.1.7
-  MooseX::Attribute::Dependent: 1.1.0
-  MooseX::Attribute::Prototype: '0.10'
-  MooseX::AttributeHelpers: '0.22'
-  MooseX::AttributeIndexes: 1.0.0
-  MooseX::AttributeInflate: '0.02'
-  MooseX::CascadeClearing: '0.03'
-  MooseX::ClassAttribute: '0.26'
-  MooseX::Constructor::AllErrors: '0.021'
-  MooseX::Declare: '0.35'
-  MooseX::FollowPBP: '0.02'
-  MooseX::Getopt: '0.56'
-  MooseX::HasDefaults: '0.02'
-  MooseX::InstanceTracking: '0.04'
-  MooseX::LazyRequire: '0.06'
-  MooseX::Meta::Attribute::Index: '0.04'
-  MooseX::Meta::Attribute::Lvalue: '0.05'
-  MooseX::Method::Signatures: '0.44'
-  MooseX::MethodAttributes: '0.22'
-  MooseX::NonMoose: '0.24'
-  MooseX::Object::Pluggable: '0.0011'
-  MooseX::POE: '0.214'
-  MooseX::Params::Validate: '0.05'
-  MooseX::PrivateSetters: '0.03'
-  MooseX::Role::Cmd: '0.06'
-  MooseX::Role::Parameterized: '1.00'
-  MooseX::Role::WithOverloading: '0.07'
-  MooseX::Runnable: '0.03'
-  MooseX::Scaffold: '0.05'
-  MooseX::SemiAffordanceAccessor: '0.05'
-  MooseX::SetOnce: '0.100473'
-  MooseX::Singleton: '0.25'
-  MooseX::SlurpyConstructor: '1.1'
-  MooseX::Storage: '0.42'
-  MooseX::StrictConstructor: '0.12'
-  MooseX::Traits: '0.11'
-  MooseX::Types: '0.19'
-  MooseX::Types::Parameterizable: '0.05'
-  MooseX::Types::Set::Object: '0.03'
-  MooseX::Types::Signal: '1.101930'
-  MooseX::UndefTolerant: '0.11'
-  PRANG: '0.14'
-  Pod::Elemental: '0.093280'
-  Pod::Weaver: '3.101638'
-  Reaction: '0.002003'
-  Test::Able: '0.10'
-  Test::CleanNamespaces: '0.03'
-  Test::Moose::More: '0.022'
-  Test::TempDir: '0.05'
-  namespace::autoclean: '0.08'
+  Catalyst: '<= 5.90049999'
+  Config::MVP: '<= 2.200004'
+  Devel::REPL: '<= 1.003020'
+  Dist::Zilla::Plugin::Git: '<= 2.016'
+  Fey: '<= 0.36'
+  Fey::ORM: '<= 0.42'
+  File::ChangeNotify: '<= 0.15'
+  HTTP::Throwable: '<= 0.017'
+  KiokuDB: '<= 0.51'
+  Markdent: '<= 0.16'
+  Mason: '<= 2.18'
+  MooseX::ABC: '<= 0.05'
+  MooseX::Aliases: '<= 0.08'
+  MooseX::AlwaysCoerce: '<= 0.13'
+  MooseX::App: '<= 1.22'
+  MooseX::Attribute::Deflator: '<= 2.1.7'
+  MooseX::Attribute::Dependent: '<= 1.1.0'
+  MooseX::Attribute::Prototype: '<= 0.10'
+  MooseX::AttributeHelpers: '<= 0.22'
+  MooseX::AttributeIndexes: '<= 1.0.0'
+  MooseX::AttributeInflate: '<= 0.02'
+  MooseX::CascadeClearing: '<= 0.03'
+  MooseX::ClassAttribute: '<= 0.26'
+  MooseX::Constructor::AllErrors: '<= 0.021'
+  MooseX::Declare: '<= 0.35'
+  MooseX::FollowPBP: '<= 0.02'
+  MooseX::Getopt: '<= 0.56'
+  MooseX::InstanceTracking: '<= 0.04'
+  MooseX::LazyRequire: '<= 0.06'
+  MooseX::Meta::Attribute::Index: '<= 0.04'
+  MooseX::Meta::Attribute::Lvalue: '<= 0.05'
+  MooseX::Method::Signatures: '<= 0.44'
+  MooseX::MethodAttributes: '<= 0.22'
+  MooseX::NonMoose: '<= 0.24'
+  MooseX::Object::Pluggable: '<= 0.0011'
+  MooseX::POE: '<= 0.214'
+  MooseX::Params::Validate: '<= 0.05'
+  MooseX::PrivateSetters: '<= 0.03'
+  MooseX::Role::Cmd: '<= 0.06'
+  MooseX::Role::Parameterized: '<= 1.00'
+  MooseX::Role::WithOverloading: '<= 0.07'
+  MooseX::Runnable: '<= 0.03'
+  MooseX::Scaffold: '<= 0.05'
+  MooseX::SemiAffordanceAccessor: '<= 0.05'
+  MooseX::SetOnce: '<= 0.100473'
+  MooseX::Singleton: '<= 0.25'
+  MooseX::SlurpyConstructor: '<= 1.1'
+  MooseX::Storage: '<= 0.42'
+  MooseX::StrictConstructor: '<= 0.12'
+  MooseX::Traits: '<= 0.11'
+  MooseX::Types: '<= 0.19'
+  MooseX::Types::Parameterizable: '<= 0.05'
+  MooseX::Types::Set::Object: '<= 0.03'
+  MooseX::Types::Signal: '<= 1.101930'
+  MooseX::UndefTolerant: '<= 0.11'
+  PRANG: '<= 0.14'
+  Pod::Elemental: '<= 0.093280'
+  Pod::Weaver: '<= 3.101638'
+  Reaction: '<= 0.002003'
+  Test::Able: '<= 0.10'
+  Test::CleanNamespaces: '<= 0.03'
+  Test::Moose::More: '<= 0.022'
+  Test::TempDir: '<= 0.05'
+  Throwable: '<= 0.102080'
+  namespace::autoclean: '<= 0.08'
 x_contributors:
   - '2shortplanks <mark@twoshortplanks.com>'
   - 'Aankhen <aankhen@gmail.com>'
@@ -1562,11 +1616,13 @@ x_contributors:
   - 'Aran Clary Deltac <bluefeet@cpan.org>'
   - 'Ash Berlin <ash@cpan.org>'
   - 'Brad Bowman <bsb@strategicdata.com.au>'
+  - 'Brendan Byrd <Perl@ResonatorSoft.org>'
   - 'Brian Manning <elspicyjack@gmail.com>'
+  - 'Chad Granum <chad.granum@dreamhost.com>'
   - 'Chankey Pathak <chankey007@gmail.com>'
   - 'Chia-liang Kao <clkao@clkao.org>'
   - 'Chip <chip@pobox.com>'
-  - 'Chris Weyl <cweyl@alumni.drew.edu>'
+  - 'Chris Weyl <rsrchboy@cpan.org>'
   - 'Christian Hansen <chansen@cpan.org>'
   - 'Christopher J. Madsen <perl@cjmweb.net>'
   - 'Cory Watson <github@onemogin.com>'
@@ -1609,6 +1665,7 @@ x_contributors:
   - 'Mateu X Hunter <hunter@missoula.org>'
   - 'Matt Kraai <kraai@ftbfs.org>'
   - 'Matthew Horsfall <wolfsage@gmail.com>'
+  - 'Michael Rykov <mrykov@gmail.com>'
   - 'Mike Whitaker <mike@altrion.org>'
   - 'Moritz Onken <onken@houseofdesign.de>'
   - 'Nathan Gray <kolibrie@graystudios.org>'
@@ -1635,6 +1692,7 @@ x_contributors:
   - 'Scott McWhirter <konobi@cpan.org>'
   - 'Shlomi Fish <shlomif@iglu.org.il>'
   - "Stefan O'Rear <stefanor@cox.net>"
+  - 'Thomas Sibley <tsibley@cpan.org>'
   - 'Todd Hepler <thepler@employees.org>'
   - 'Tokuhiro Matsuno <tokuhirom@gp.ath.cx>'
   - 'Tomas Doran <bobtfish@bobtfish.net>'
@@ -1652,6 +1710,7 @@ x_contributors:
   - 'matthof <rmhofmann@gmail.com>'
   - 'michaelr <michaelr@michaelr-laptop.(none)>'
   - 'nperez <nperez@cpan.org>'
+  - 'pktm <pktm@users.noreply.github.com>'
   - 'rodrigolive <rodrigolive@gmail.com>'
   - 'shelling <navyblueshellingford@gmail.com>'
   - 'wickline <m-s-w-github@wickline.org>'
@@ -99,11 +99,13 @@ my %WriteMakefileArgs = (
     "parent" => "0.223"
   },
   "TEST_REQUIRES" => {
+    "CPAN::Meta::Check" => "0.007",
+    "CPAN::Meta::Requirements" => 0,
     "Test::Fatal" => "0.001",
     "Test::More" => "0.88",
     "Test::Requires" => "0.05"
   },
-  "VERSION" => "2.1204",
+  "VERSION" => "2.1210",
   "XS" => {
     "xs/Attribute.xs" => "xs/Attribute.c",
     "xs/AttributeCore.xs" => "xs/AttributeCore.c",
@@ -129,6 +131,8 @@ my %WriteMakefileArgs = (
 
 
 my %FallbackPrereqs = (
+  "CPAN::Meta::Check" => "0.007",
+  "CPAN::Meta::Requirements" => 0,
   "Carp" => "1.22",
   "Class::Load" => "0.09",
   "Class::Load::XS" => "0.01",
@@ -1,4 +1,5 @@
-[![Build Status](https://travis-ci.org/moose/Moose.png?branch=master,stable/2.08)](https://travis-ci.org/moose/Moose)
+[![CPAN version](https://badge.fury.io/pl/Moose.svg)](http://badge.fury.io/pl/Moose)
+[![Build Status](https://travis-ci.org/moose/Moose.png?branch=master,stable/2.12)](https://travis-ci.org/moose/Moose)
 
 Moose
 =====
@@ -1,128 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use warnings;
-
-use File::Slurp qw( write_file );
-use PPI;
-
-rewrite_doc($_) for grep { -w } @ARGV;
-
-sub rewrite_doc {
-    my $file = shift;
-
-    my $doc = PPI::Document->new($file);
-
-    return unless $doc =~ /Test::Exception/;
-
-    print $file, "\n";
-
-    my $pattern = sub {
-        my $elt = $_[1];
-
-        return 1
-            if $elt->isa('PPI::Statement')
-                && $elt->content()
-                =~ /^\s*(?:::)?(?:lives_|throws_|dies_)(?:ok|and)/;
-
-        return 0;
-    };
-
-    for my $elt ( @{ $doc->find($pattern) || [] } ) {
-        transform_statement($elt);
-    }
-
-    my $content = $doc->content();
-    $content =~ s/Test::Exception/Test::Fatal/g;
-
-    write_file( $file, $content );
-}
-
-sub transform_statement {
-    my $stmt = shift;
-
-    my @children = $stmt->schildren;
-
-    my $func = shift @children;
-
-    my $colons = $func =~ /^::/ ? '::' : q{};
-
-    my $code;
-    if ( $func =~ /lives_/ ) {
-        $code = function(
-            $colons . 'is',
-            $children[0],
-            'undef',
-            $children[1]
-        );
-    }
-    elsif ( $func =~ /dies_/ ) {
-        $code = function(
-            $colons . 'isnt',
-            $children[0],
-            'undef',
-            $children[1]
-        );
-    }
-    elsif ( $func =~ /throws_/ ) {
-
-        # $children[2] is always a comma if it exists
-        if ( $children[1]->isa('PPI::Token::QuoteLike::Regexp') ) {
-            $code = function(
-                $colons . 'like',
-                $children[0],
-                $children[1],
-                $children[3]
-            );
-        }
-        else {
-            $code = function(
-                $colons . 'is',
-                $children[0],
-                $children[1],
-                $children[3]
-            );
-        }
-    }
-
-    $stmt->insert_before($code);
-    $stmt->remove;
-}
-
-sub function {
-    my $func      = shift;
-    my $exception = shift;
-    my $expect    = shift;
-    my $desc      = shift;
-
-    my $exc_func = $func =~ /^::/ ? '::exception' : 'exception';
-
-    my @code;
-
-    push @code,
-        PPI::Token::Word->new($func),
-        PPI::Token::Structure->new('('),
-        PPI::Token::Whitespace->new(q{ }),
-        PPI::Token::Word->new($exc_func),
-        PPI::Token::Whitespace->new(q{ }),
-        $exception->clone,
-        PPI::Token::Operator->new(','),
-        PPI::Token::Whitespace->new(q{ }),
-        ( ref $expect ? $expect->clone : PPI::Token::Word->new($expect) );
-
-    if ( $desc && $desc->isa('PPI::Token::Quote') ) {
-        push @code, PPI::Token::Operator->new(','),
-            PPI::Token::Whitespace->new(q{ }),
-            $desc->clone;
-    }
-
-    push @code,
-        PPI::Token::Whitespace->new(q{ }),
-        PPI::Token::Structure->new(')'),
-        PPI::Token::Structure->new(';');
-
-    my $stmt = PPI::Statement->new;
-    $stmt->add_element($_) for @code;
-
-    return $stmt;
-}
@@ -276,4 +276,3 @@ sub get_exceptions_to_messages {
 
     return \%hash;
 }
-
@@ -3,12 +3,13 @@
 use strict;
 use warnings;
 
-use lib 'inc';
 use File::Find::Rule;
 use Getopt::Long;
-use MyInline;
 use Test::Inline;
 
+use lib 'inc';
+use MyInline;
+
 my $quiet;
 GetOptions( 'quiet' => \$quiet );
 
@@ -30,7 +31,7 @@ $inline->save;
 
     package My::Output;
 
-    use File::Slurp qw( write_file );
+    use Path::Tiny;
 
     sub write {
         my $class   = shift;
@@ -39,7 +40,7 @@ $inline->save;
 
         $name =~ s/^moose_cookbook_//;
 
-        write_file( "t/recipes/$name", $content );
+        path( "t/recipes/$name" )->spew( $content );
 
         return 1;
     }
@@ -83,5 +83,3 @@ cmpthese($ins_rounds, {
         $caf_idx++;
     },
 }, 'noc');
-
-
@@ -27,4 +27,3 @@
         y: 6
       accessor: x
       accessor_args: [ 5 ]
-
@@ -42,4 +42,3 @@ sub clear {
 __PACKAGE__;
 
 __END__
-
@@ -33,4 +33,3 @@ sub clear {
 __PACKAGE__;
 
 __END__
-
@@ -16,5 +16,3 @@ foreach my $bench ( @$data ) {
     Bench::Run->new( %$bench )->run;
     print "\n\n";
 }
-
-
@@ -76,4 +76,3 @@ for my $module (sort keys %lib_map) {
     system($cmd);
     print "\n";
 }
-
@@ -114,4 +114,3 @@ cmpthese($rounds, {
         CMM::Install::around(method => sub {});
     },
 }, 'noc');
-
@@ -8,7 +8,7 @@ use autodie;
 use Parse::BACKPAN::Packages;
 use LWP::Simple;
 use Archive::Tar;
-use File::Slurp 'slurp';
+use Path::Tiny;
 
 my $backpan = Parse::BACKPAN::Packages->new;
 my @cmops   = $backpan->distributions('Class-MOP');
@@ -28,7 +28,7 @@ for my $moose (@mooses) {
     my $moose_dir = build($moose);
 
     # Find the CMOP dependency
-    my $makefile = slurp("$moose_dir/Makefile.PL");
+    my $makefile = path("$moose_dir/Makefile.PL")->slurp_utf8;
     my ($cmop_dep) = $makefile =~ /Class::MOP.*?([0-9._]+)/
         or die "Unable to find Class::MOP version dependency in $moose_dir/Makefile.PL";
 
@@ -150,4 +150,3 @@ sub build {
     (my $directory = $arbitrary_file) =~ s{/.*}{};
     return $directory;
 }
-
@@ -151,4 +151,3 @@ timethese(
         },
     }
 );
-
@@ -13,18 +13,24 @@ license = Perl_5
 copyright_holder = Infinity Interactive, Inc.
 copyright_year = 2006
 
-version = 2.1204
+version = 2.1210
 
 ; This sets the required version of Dist::Zilla
 :version = 4.200016
 
-; authordep CPAN::Meta::Requirements
-[=inc::RequireAuthorDeps]
+[EnsurePrereqsInstalled]
+:version = 0.003
+build_phase = release ; be nice to travis
+type = requires
+type = recommends
+
 [=inc::Clean]
 
 [GatherDir]
 exclude_match = ^t/recipes/(?!basics_geonome_overloadingsubtypesandcoercion)
 exclude_match = ^Moose-[\d.]+
+exclude_match = ^nytprof.*
+exclude_filename = Makefile.PL
 
 [PruneCruft]
 [ManifestSkip]  ; we have no MANIFEST.SKIP file, so this is a no-op
@@ -36,18 +42,13 @@ exclude_match = ^Moose-[\d.]+
 
 ; authordep Dist::Zilla::Plugin::MakeMaker::Awesome
 [=inc::MakeMaker]
-[Manifest]
+default_jobs = 9
 
-[TestRelease]
-[UploadToCPAN]
+[Manifest]
 
 [NextRelease]
 format = %-7v  %{yyyy-MM-dd}d%{ (TRIAL RELEASE)}T
 
-[PruneFiles]
-filenames = Makefile.PL
-match = ^nytprof.*
-
 [PkgVersion]
 [MetaConfig]
 
@@ -64,10 +65,21 @@ repository.type   = git
 x_IRC = irc://irc.perl.org/#moose
 x_MailingList = http://lists.perl.org/list/moose.html
 
+[FileFinder::ByName / PodModules]
+dir = lib
+file = *.pod
+
+[FileFinder::Filter / ModulesSansPod]
+finder = :InstallModules
+skip = \.pod$
+
+[=inc::SimpleProvides]
+finder = PodModules
+
 [MetaProvides::Package]
 meta_noindex = 1
 :version = 1.15000002
-finder = :InstallModules
+finder = ModulesSansPod ; to avoid "No namespaces detected in file..." spewage
 
 [MetaNoIndex]
 package   = Class::MOP::Class::Immutable::Trait
@@ -95,6 +107,7 @@ post_code_replacer = replace_with_nothing
 
 ; authordep Test::Inline
 ; authordep File::Find::Rule
+; authordep Test::Inline::Extract
 [=inc::ExtractInlineTests]
 
 [PromptIfStale]
@@ -107,15 +120,41 @@ check_all_plugins = 1
 [Test::NoTabs]
 [MetaTests]
 [Test::Kwalitee]
+skiptest = use_strict ; temporary, until RT#94468 is fixed
+
 [MojibakeTests]
 [RunExtraTests]
+default_jobs = 9
 
 [Test::ReportPrereqs]
+include = Dist::CheckConflicts
+include = MooseX::NonMoose
+include = Algorithm::C3
+include = DateTime
+include = DateTime::Calendar::Mayan
+include = DateTime::Format::MySQL
+include = Declare::Constraints::Simple
+include = DBM::Deep
+include = HTTP::Headers
+include = IO::File
+include = IO::String
+include = Locale::US
+include = Module::Refresh
+include = Params::Coerce
+include = Regexp::Common
+include = SUPER
+include = Test::Deep
+include = Test::DependentModules
+include = Test::LeakTrace
+include = Test::Output
+include = URI
+
 [Test::CPAN::Changes]
 
 [Test::Compile]
 :version = 2.037
-xt_mode = 1
+phase = develop
+filename = xt/release/00-compile.t
 bail_out_on_fail = 1
 ; this serves as a TODO list for getting all modules to load independently --
 ; see RT#89536
@@ -140,9 +179,7 @@ skip = ^Moose::Meta::TypeConstraint::Parameterized$
 skip = ^Moose::Meta::TypeConstraint::Role$
 skip = ^Moose::Meta::TypeConstraint::Union$
 
-; for us to use this, we need the [PkgVersion] fix that also munges .pod
-;[Test::NewVersion]
-;:version = 0.008
+[CheckVersionIncrement]
 
 ; we would like to have this, but currently there are false negatives:
 ; https://rt.cpan.org/Ticket/Display.html?id=87883
@@ -188,6 +225,7 @@ File::Spec = 0
 ;Config = 0     ; not actually in 02packages.details.txt!!!
 
 [Prereqs::AuthorDeps]
+relation = suggests
 exclude = inc::CheckDelta
 exclude = inc::Clean
 exclude = inc::ExtractInlineTests
@@ -196,9 +234,10 @@ exclude = inc::GitUpToDate
 exclude = inc::MMHelper
 exclude = inc::MakeMaker
 exclude = inc::MyInline
-exclude = inc::RequireAuthorDeps
+exclude = inc::SimpleProvides
 exclude = inc::TestRelease
 
+; mostly, these are things needed by xt tests
 [Prereqs / DevelopRequires]
 Algorithm::C3                = 0
 Data::Visitor                = 0
@@ -206,7 +245,7 @@ DateTime                     = 0
 DateTime::Calendar::Mayan    = 0
 DateTime::Format::MySQL      = 0
 Declare::Constraints::Simple = 0
-DBM::Deep                    = 0
+DBM::Deep                    = 1.003
 File::Find::Rule             = 0
 HTTP::Headers                = 0
 IO::File                     = 0
@@ -217,19 +256,19 @@ Module::Refresh              = 0
 PadWalker                    = 0
 Params::Coerce               = 0
 Regexp::Common               = 0
-SUPER                        = 0
+SUPER                        = 1.10
 Test::Deep                   = 0
-Test::DependentModules       = 0.13
+;Test::DependentModules       = 0.13    ; bad dep chain, used by a disabled test.
 Test::Inline                 = 0
 Test::LeakTrace              = 0
 Test::Memory::Cycle          = 0
 Test::Output                 = 0
+Test::Pod::Coverage          = 1.04
 Test::Spelling               = 0
 URI                          = 0
-Test::Inline::Extract        = 0
 ExtUtils::MakeMaker::Dist::Zilla::Develop = 0
 MooseX::NonMoose             = 0
-Specio                       = 0.07
+Specio                       = 0.10
 Module::CPANTS::Analyse      = 0.92
 Test::Kwalitee               = 1.15
 blib                         = 0
@@ -240,10 +279,8 @@ Class::Load                  = 0.07
 ; remove this if this is an issue
 Devel::PartialDump = 0.14
 
-[Prereqs / DevelopConflicts]
-Dist::Zilla::Plugin::Conflicts = == 0.11
-
 [Conflicts]
+:version = 0.13001
 -script = bin/moose-outdated
 Catalyst                       = 5.90049999
 Config::MVP                    = 2.200004
@@ -272,7 +309,6 @@ MooseX::Constructor::AllErrors = 0.021
 MooseX::Declare                = 0.35
 MooseX::FollowPBP              = 0.02
 MooseX::Getopt                 = 0.56
-MooseX::HasDefaults            = 0.02
 MooseX::InstanceTracking       = 0.04
 MooseX::LazyRequire            = 0.06
 MooseX::Meta::Attribute::Index = 0.04
@@ -310,6 +346,10 @@ Test::Able                     = 0.10
 Test::CleanNamespaces          = 0.03
 Test::Moose::More              = 0.022
 Test::TempDir                  = 0.05
+Throwable                      = 0.102080
+
+[Test::CheckBreaks]
+conflicts_module = Moose::Conflicts
 
 [=inc::CheckDelta]
 [=inc::GitUpToDate]
@@ -324,6 +364,7 @@ release_branch = stable/2.12
 [Git::Check]
 allow_dirty =
 
+[TestRelease]
 [ConfirmRelease]
 
 [Git::Commit]
@@ -336,6 +377,8 @@ tag_message = %v%t
 
 [Git::Push]
 
+[UploadToCPAN]
+
 [ContributorsFromGit]
 
 ; authordep Class::Load
@@ -16,14 +16,4 @@ sub before_build {
             die "couldn't exec: $!";
         }
     }
-
-    if (-e 'META.yml') {
-        $self->log("Removing existing META.yml file");
-        unlink('META.yml');
-    }
-
-    if ( -e 'lib/Moose/Manual/Exceptions/Manifest.pod') {
-        $self->log('Removing existing Moose::Manual::Exceptions::Manifest');
-        unlink('lib/Moose/Manual/Exceptions/Manifest.pod');
-    }
 }
@@ -4,10 +4,7 @@ use Moose;
 
 with 'Dist::Zilla::Role::FileGatherer';
 
-use File::Basename qw( basename );
 use File::Find::Rule;
-use File::Spec;
-use File::Temp qw( tempdir );
 use inc::MyInline;
 use Test::Inline;
 
@@ -18,13 +18,14 @@ sub gather_files {
         name    => $filename->stringify,
         # more to fill in later
         content => <<'END_POD',
-package Moose::Manual::Exceptions::Manifest;
 use strict;
 use warnings;
-
+package Moose::Manual::Exceptions::Manifest;
 # ABSTRACT: Moose's Exception Types
+
 __END__
 
+=for comment insert generated content here
 END_POD
     ));
 }
@@ -47,11 +48,11 @@ sub after_build {
     my $text = capturex($^X, "author/docGenerator.pl");
 
     my $file_obj = first { $_->name eq $filename } @{$self->zilla->files};
-    $file_obj->content($file_obj->content . $text);
 
-    $self->zilla->plugin_named('SurgicalPodWeaver')->munge_file($file_obj);
+    my $content = $file_obj->content;
+    my $pos = index($content, "\n\n=for comment insert generated content here");
+    $file_obj->content(substr($content, 0, $pos) . "\n\n" . $text . substr($content, $pos, -1));
 
-    $filename->touchpath;
     $filename->spew_raw($file_obj->encoded_content);
 }
 
@@ -4,8 +4,6 @@ use strict;
 use warnings;
 
 use Config;
-use Cwd qw( abs_path );
-use File::Basename qw( dirname );
 
 sub ccflags_dyn {
     my $is_dev = shift;
@@ -19,7 +19,11 @@ use warnings;
             package\s+                            # A package
             [^\W\d]\w*(?:(?:\'|::)[^\W\d]\w*)*    # ... with a name
             \s*;                                  # And a statement terminator
-                |
+        |                                  # OR
+            \#\s*PODNAME:\s+                      # A PODNAME comment
+            [^\W\d]\w*(?:(?:\'|::)[^\W\d]\w*)*    # ... with a name
+            (?:\s+|$)                             # And a name terminator
+        |
                         =head1[ \t]+SYNOPSIS\n
                         .*?
                         (?=\n=)
@@ -60,6 +64,13 @@ use warnings;
         # tests.
         return unless @elements > 2;
 
+        if ( @elements && $self->{source} =~ /# PODNAME: (Moose::Cookbook\S+)(?:\s|$)/ ) {
+            foreach my $element (@elements)
+            {
+                $element = "package $1;" if $element =~ /# PODNAME: (Moose::Cookbook\S+)(?:\s+|$)/;
+            }
+        }
+
         if ( @elements && $self->{source} =~ /=head1 NAME\n\n(Moose::Cookbook\S+)/ ) {
             unshift @elements, 'package ' . $1 . ';';
         }
@@ -1,27 +0,0 @@
-package inc::RequireAuthorDeps;
-
-use Class::Load qw(load_class);
-use Moose;
-
-use CPAN::Meta::Requirements;
-use Try::Tiny;
-
-with 'Dist::Zilla::Role::BeforeRelease';
-
-sub before_release {
-    my $self = shift;
-
-    $self->log("Ensuring all author dependencies are installed");
-    my $req = CPAN::Meta::Requirements->new;
-    my $prereqs = $self->zilla->prereqs;
-
-    for my $phase (qw(build test configure runtime develop)) {
-        $req->add_requirements($prereqs->requirements_for($phase, 'requires'));
-    }
-
-    for my $mod (grep { $_ ne 'perl' } $req->required_modules) {
-        load_class($mod);
-    }
-}
-
-1;
@@ -0,0 +1,31 @@
+use strict;
+use warnings;
+package inc::SimpleProvides;
+
+use Moose;
+with 'Dist::Zilla::Role::MetaProvider',
+    'Dist::Zilla::Role::FileFinderUser' => {
+        default_finders => [ ':InstallModules' ],
+    },
+;
+
+sub metadata
+{
+    my $self = shift;
+
+    my $version = $self->zilla->version;
+
+    return +{
+        provides => {
+            map {
+                my $filename = $_->name;
+                (my $package = $filename) =~ s{[/\\]}{::}g;
+                $package =~ s/^lib:://;
+                $package =~ s/\.pod$//;
+                $package => { file => $filename, version => $version }
+            } @{$self->found_files},
+        }
+    };
+}
+
+__PACKAGE__->meta->make_immutable;
@@ -1,9 +1,8 @@
-
 package Class::MOP::Attribute;
 BEGIN {
   $Class::MOP::Attribute::AUTHORITY = 'cpan:STEVAN';
 }
-$Class::MOP::Attribute::VERSION = '2.1204';
+$Class::MOP::Attribute::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -15,8 +14,6 @@ use Try::Tiny;
 
 use parent 'Class::MOP::Object', 'Class::MOP::Mixin::AttributeCore';
 
-use Moose::Util 'throw_exception';
-
 # NOTE: (meta-circularity)
 # This method will be replaced in the
 # boostrap section of Class::MOP, by
@@ -35,24 +32,24 @@ sub new {
     my $name = $options{name};
 
     (defined $name)
-        || throw_exception( MOPAttributeNewNeedsAttributeName => class  => $class,
+        || $class->_throw_exception( MOPAttributeNewNeedsAttributeName => class  => $class,
                                                                  params => \%options
                           );
 
     $options{init_arg} = $name
         if not exists $options{init_arg};
     if(exists $options{builder}){
-        throw_exception( BuilderMustBeAMethodName => class  => $class,
+        $class->_throw_exception( BuilderMustBeAMethodName => class  => $class,
                                                      params => \%options
                        )
             if ref $options{builder} || !(defined $options{builder});
-        throw_exception( BothBuilderAndDefaultAreNotAllowed => class  => $class,
+        $class->_throw_exception( BothBuilderAndDefaultAreNotAllowed => class  => $class,
                                                                params => \%options
                        )
             if exists $options{default};
     } else {
         ($class->is_default_a_coderef(\%options))
-            || throw_exception( ReferencesAreNotAllowedAsDefault => class          => $class,
+            || $class->_throw_exception( ReferencesAreNotAllowedAsDefault => class          => $class,
                                                                     params         => \%options,
                                                                     attribute_name => $options{name}
                               )
@@ -60,7 +57,7 @@ sub new {
     }
 
     if( $options{required} and not( defined($options{builder}) || defined($options{init_arg}) || exists $options{default} ) ) {
-        throw_exception( RequiredAttributeLacksInitialization => class  => $class,
+        $class->_throw_exception( RequiredAttributeLacksInitialization => class  => $class,
                                                                  params => \%options
                        );
     }
@@ -152,7 +149,7 @@ sub initialize_instance_slot {
             );
         }
         else {
-            throw_exception( BuilderMethodNotSupportedForAttribute => attribute => $self,
+            $self->_throw_exception( BuilderMethodNotSupportedForAttribute => attribute => $self,
                                                                       instance  => $instance
                            );
         }
@@ -255,7 +252,7 @@ sub slots { (shift)->name }
 sub attach_to_class {
     my ($self, $class) = @_;
     (blessed($class) && $class->isa('Class::MOP::Class'))
-        || throw_exception( AttachToClassNeedsAClassMOPClassInstanceOrASubclass => attribute => $self,
+        || $self->_throw_exception( AttachToClassNeedsAClassMOPClassInstanceOrASubclass => attribute => $self,
                                                                                    class     => $class
                           );
     weaken($self->{'associated_class'} = $class);
@@ -383,7 +380,7 @@ sub _process_accessors {
 
     if (ref($accessor)) {
         (ref($accessor) eq 'HASH')
-            || throw_exception( BadOptionFormat => attribute    => $self,
+            || $self->_throw_exception( BadOptionFormat => attribute    => $self,
                                                    option_value => $accessor,
                                                    option_name  => $type
                               );
@@ -420,7 +417,7 @@ sub _process_accessors {
             );
         }
         catch {
-            throw_exception( CouldNotCreateMethod => attribute    => $self,
+            $self->_throw_exception( CouldNotCreateMethod => attribute    => $self,
                                                      option_value => $accessor,
                                                      option_name  => $type,
                                                      error        => $_
@@ -515,7 +512,7 @@ Class::MOP::Attribute - Attribute Meta Object
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -2,15 +2,13 @@ package Class::MOP::Class::Immutable::Trait;
 BEGIN {
   $Class::MOP::Class::Immutable::Trait::AUTHORITY = 'cpan:STEVAN';
 }
-$Class::MOP::Class::Immutable::Trait::VERSION = '2.1204';
+$Class::MOP::Class::Immutable::Trait::VERSION = '2.1210';
 use strict;
 use warnings;
 
 use MRO::Compat;
-
 use Scalar::Util 'blessed', 'weaken';
-
-use Moose::Util 'throw_exception';
+use Module::Runtime 'use_module';
 
 # the original class of the metaclass instance
 sub _get_mutable_metaclass_name { $_[0]{__immutable}{original_class} }
@@ -22,12 +20,12 @@ sub _immutable_metaclass { ref $_[1] }
 
 sub _immutable_read_only {
     my $name = shift;
-    throw_exception( CallingReadOnlyMethodOnAnImmutableInstance => method_name => $name );
+    __throw_exception( CallingReadOnlyMethodOnAnImmutableInstance => method_name => $name );
 }
 
 sub _immutable_cannot_call {
     my $name = shift;
-    throw_exception( CallingMethodOnAnImmutableInstance => method_name => $name );
+    __throw_exception( CallingMethodOnAnImmutableInstance => method_name => $name );
 }
 
 for my $name (qw/superclasses/) {
@@ -88,6 +86,14 @@ sub _method_map {
     $self->{__immutable}{_method_map} ||= $self->$orig;
 }
 
+# private method, for this file only -
+# if we declare a method here, it will behave differently depending on what
+# class this trait is applied to, so we won't have a reliable parameter list.
+sub __throw_exception {
+    my ($exception_type, @args_to_exception) = @_;
+    die use_module( "Moose::Exception::$exception_type" )->new( @args_to_exception );
+}
+
 1;
 
 # ABSTRACT: Implements immutability for metaclass objects
@@ -104,7 +110,7 @@ Class::MOP::Class::Immutable::Trait - Implements immutability for metaclass obje
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,8 @@
-
 package Class::MOP::Class;
 BEGIN {
   $Class::MOP::Class::AUTHORITY = 'cpan:STEVAN';
 }
-$Class::MOP::Class::VERSION = '2.1204';
+$Class::MOP::Class::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -24,8 +23,6 @@ use parent 'Class::MOP::Module',
          'Class::MOP::Mixin::HasAttributes',
          'Class::MOP::Mixin::HasMethods';
 
-use Moose::Util 'throw_exception';
-
 # Creation
 
 sub initialize {
@@ -41,7 +38,7 @@ sub initialize {
     }
 
     ($package_name && !ref($package_name))
-        || throw_exception( InitializeTakesUnBlessedPackageName => package_name => $package_name );
+        || ($class||__PACKAGE__)->_throw_exception( InitializeTakesUnBlessedPackageName => package_name => $package_name );
     return Class::MOP::get_metaclass_by_name($package_name)
         || $class->_construct_class_instance(package => $package_name, @_);
 }
@@ -76,7 +73,7 @@ sub _construct_class_instance {
     my $options      = @_ == 1 ? $_[0] : {@_};
     my $package_name = $options->{package};
     (defined $package_name && $package_name)
-        || throw_exception("ConstructClassInstanceTakesPackageName");
+        || $class->_throw_exception("ConstructClassInstanceTakesPackageName");
     # NOTE:
     # return the metaclass if we have it cached,
     # and it is still defined (it has not been
@@ -236,7 +233,8 @@ sub _check_class_metaclass_compatibility {
 
         my $super_meta_type = $super_meta->_real_ref_name;
 
-        throw_exception( IncompatibleMetaclassOfSuperclass => class                => $self,
+        $self->_throw_exception( IncompatibleMetaclassOfSuperclass => class_name           => $self->name,
+                                                              class_meta_type      => ref( $self ),
                                                               superclass_name      => $superclass_name,
                                                               superclass_meta_type => $super_meta_type
                        );
@@ -262,7 +260,7 @@ sub _check_single_metaclass_compatibility {
     if (!$self->_single_metaclass_is_compatible($metaclass_type, $superclass_name)) {
         my $super_meta = Class::MOP::get_metaclass_by_name($superclass_name);
 
-        throw_exception( MetaclassTypeIncompatible => class           => $self,
+        $self->_throw_exception( MetaclassTypeIncompatible => class_name      => $self->name,
                                                       superclass_name => $superclass_name,
                                                       metaclass_type  => $metaclass_type
                        );
@@ -365,7 +363,7 @@ sub _fix_class_metaclass_incompatibility {
 
     if ($self->_class_metaclass_can_be_made_compatible($super_meta)) {
         ($self->is_pristine)
-            || throw_exception( CannotFixMetaclassCompatibility => class      => $self,
+            || $self->_throw_exception( CannotFixMetaclassCompatibility => class_name => $self->name,
                                                                    superclass => $super_meta
                               );
 
@@ -381,7 +379,7 @@ sub _fix_single_metaclass_incompatibility {
 
     if ($self->_single_metaclass_can_be_made_compatible($super_meta, $metaclass_type)) {
         ($self->is_pristine)
-            || throw_exception( CannotFixMetaclassCompatibility => class          => $self,
+            || $self->_throw_exception( CannotFixMetaclassCompatibility => class_name     => $self->name,
                                                                    superclass     => $super_meta,
                                                                    metaclass_type => $metaclass_type
                               );
@@ -419,19 +417,19 @@ sub create {
     my %options = @args;
 
     (ref $options{superclasses} eq 'ARRAY')
-        || throw_exception( CreateMOPClassTakesArrayRefOfSuperclasses => class  => $class,
+        || __PACKAGE__->_throw_exception( CreateMOPClassTakesArrayRefOfSuperclasses => class  => $class,
                                                                          params => \%options
                           )
             if exists $options{superclasses};
 
     (ref $options{attributes} eq 'ARRAY')
-        || throw_exception( CreateMOPClassTakesArrayRefOfAttributes => class  => $class,
+        || __PACKAGE__->_throw_exception( CreateMOPClassTakesArrayRefOfAttributes => class  => $class,
                                                                        params => \%options
                           )
             if exists $options{attributes};
 
     (ref $options{methods} eq 'HASH')
-        || throw_exception( CreateMOPClassTakesHashRefOfMethods => class  => $class,
+        || __PACKAGE__->_throw_exception( CreateMOPClassTakesHashRefOfMethods => class  => $class,
                                                                    params => \%options
                           )
             if exists $options{methods};
@@ -510,16 +508,16 @@ sub _construct_instance {
     my $instance;
     if (my $instance_class = blessed($params->{__INSTANCE__})) {
         ($instance_class eq $class->name)
-            || throw_exception( InstanceBlessedIntoWrongClass => class    => $class,
-                                                                 params   => $params,
-                                                                 instance => $params->{__INSTANCE__}
+            || $class->_throw_exception( InstanceBlessedIntoWrongClass => class_name => $class->name,
+                                                                 params     => $params,
+                                                                 instance   => $params->{__INSTANCE__}
                               );
         $instance = $params->{__INSTANCE__};
     }
     elsif (exists $params->{__INSTANCE__}) {
-        throw_exception( InstanceMustBeABlessedReference => class    => $class,
-                                                            params   => $params,
-                                                            instance => $params->{__INSTANCE__}
+        $class->_throw_exception( InstanceMustBeABlessedReference => class_name => $class->name,
+                                                            params     => $params,
+                                                            instance   => $params->{__INSTANCE__}
                        );
     }
     else {
@@ -767,8 +765,8 @@ sub clone_object {
     my $class    = shift;
     my $instance = shift;
     (blessed($instance) && $instance->isa($class->name))
-        || throw_exception( CloneObjectExpectsAnInstanceOfMetaclass => class    => $class,
-                                                                       instance => $instance
+        || $class->_throw_exception( CloneObjectExpectsAnInstanceOfMetaclass => class_name => $class->name,
+                                                                       instance   => $instance,
                           );
     # NOTE:
     # we need to protect the integrity of the
@@ -781,9 +779,9 @@ sub clone_object {
 sub _clone_instance {
     my ($class, $instance, %params) = @_;
     (blessed($instance))
-        || throw_exception( OnlyInstancesCanBeCloned => class    => $class,
-                                                        instance => $instance,
-                                                        params   => \%params
+        || $class->_throw_exception( OnlyInstancesCanBeCloned => class_name => $class->name,
+                                                        instance   => $instance,
+                                                        params     => \%params
                           );
     my $meta_instance = $class->get_meta_instance();
     my $clone = $meta_instance->clone_instance($instance);
@@ -828,9 +826,10 @@ sub rebless_instance {
 
     my $old_class = $old_metaclass ? $old_metaclass->name : blessed($instance);
     $self->name->isa($old_class)
-        || throw_exception( CanReblessOnlyIntoASubclass => class    => $self,
-                                                           instance => $instance,
-                                                           params   => \%params
+        || $self->_throw_exception( CanReblessOnlyIntoASubclass => class_name     => $self->name,
+                                                           instance       => $instance,
+                                                           instance_class => blessed( $instance ),
+                                                           params         => \%params,
                           );
 
     $self->_force_rebless_instance($_[1], %params);
@@ -844,8 +843,9 @@ sub rebless_instance_back {
     my $old_class
         = $old_metaclass ? $old_metaclass->name : blessed($instance);
     $old_class->isa( $self->name )
-        || throw_exception( CanReblessOnlyIntoASuperclass => class    => $self,
-                                                             instance => $instance,
+        || $self->_throw_exception( CanReblessOnlyIntoASuperclass => class_name     => $self->name,
+                                                             instance       => $instance,
+                                                             instance_class => blessed( $instance ),
                           );
 
     $self->_force_rebless_instance($_[1]);
@@ -1060,7 +1060,7 @@ sub _method_lookup_order {
             $method = $self->find_next_method_by_name($method_name);
             # die if it does not exist
             (defined $method)
-                || throw_exception( MethodNameNotFoundInInheritanceHierarchy => class       => $self,
+                || $self->_throw_exception( MethodNameNotFoundInInheritanceHierarchy => class_name  => $self->name,
                                                                                 method_name => $method_name
                                   );
             # and now make sure to wrap it
@@ -1085,7 +1085,7 @@ sub _method_lookup_order {
     sub add_before_method_modifier {
         my ($self, $method_name, $method_modifier) = @_;
         (defined $method_name && length $method_name)
-            || throw_exception( MethodModifierNeedsMethodName => class => $self );
+            || $self->_throw_exception( MethodModifierNeedsMethodName => class_name => $self->name );
         my $method = $fetch_and_prepare_method->($self, $method_name);
         $method->add_before_modifier(
             subname(':before' => $method_modifier)
@@ -1095,7 +1095,7 @@ sub _method_lookup_order {
     sub add_after_method_modifier {
         my ($self, $method_name, $method_modifier) = @_;
         (defined $method_name && length $method_name)
-            || throw_exception( MethodModifierNeedsMethodName => class => $self );
+            || $self->_throw_exception( MethodModifierNeedsMethodName => class_name => $self->name );
         my $method = $fetch_and_prepare_method->($self, $method_name);
         $method->add_after_modifier(
             subname(':after' => $method_modifier)
@@ -1105,7 +1105,7 @@ sub _method_lookup_order {
     sub add_around_method_modifier {
         my ($self, $method_name, $method_modifier) = @_;
         (defined $method_name && length $method_name)
-            || throw_exception( MethodModifierNeedsMethodName => class => $self );
+            || $self->_throw_exception( MethodModifierNeedsMethodName => class_name => $self->name );
         my $method = $fetch_and_prepare_method->($self, $method_name);
         $method->add_around_modifier(
             subname(':around' => $method_modifier)
@@ -1129,7 +1129,7 @@ sub _method_lookup_order {
 sub find_method_by_name {
     my ($self, $method_name) = @_;
     (defined $method_name && length $method_name)
-        || throw_exception( MethodNameNotGiven => class => $self );
+        || $self->_throw_exception( MethodNameNotGiven => class_name => $self->name );
     foreach my $class ($self->_method_lookup_order) {
         my $method = Class::MOP::Class->initialize($class)->get_method($method_name);
         return $method if defined $method;
@@ -1158,7 +1158,7 @@ sub get_all_method_names {
 sub find_all_methods_by_name {
     my ($self, $method_name) = @_;
     (defined $method_name && length $method_name)
-        || throw_exception( MethodNameNotGiven => class => $self );
+        || $self->_throw_exception( MethodNameNotGiven => class_name => $self->name );
     my @methods;
     foreach my $class ($self->_method_lookup_order) {
         # fetch the meta-class ...
@@ -1175,7 +1175,7 @@ sub find_all_methods_by_name {
 sub find_next_method_by_name {
     my ($self, $method_name) = @_;
     (defined $method_name && length $method_name)
-        || throw_exception( MethodNameNotGiven => class => $self );
+        || $self->_throw_exception( MethodNameNotGiven => class_name => $self->name );
     my @cpl = ($self->_method_lookup_order);
     shift @cpl; # discard ourselves
     foreach my $class (@cpl) {
@@ -1336,8 +1336,8 @@ sub _immutable_metaclass {
     }
 
     my $trait = $args{immutable_trait} = $self->immutable_trait
-        || throw_exception( NoImmutableTraitSpecifiedForClass => class  => $self,
-                                                                 params => \%args
+        || $self->_throw_exception( NoImmutableTraitSpecifiedForClass => class_name => $self->name,
+                                                                 params     => \%args
                           );
 
     my $meta      = $self->meta;
@@ -1474,8 +1474,8 @@ sub _inline_destructor {
     my ( $self, %args ) = @_;
 
     ( exists $args{destructor_class} && defined $args{destructor_class} )
-        || throw_exception( NoDestructorClassSpecified => class  => $self,
-                                                          params => \%args
+        || $self->_throw_exception( NoDestructorClassSpecified => class_name => $self->name,
+                                                          params     => \%args,
                           );
 
     if ( $self->has_method('DESTROY') && ! $args{replace_destructor} ) {
@@ -1528,7 +1528,7 @@ Class::MOP::Class - Class Meta Object
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -1604,6 +1604,7 @@ An optional version number for the newly created package.
 =item * authority
 
 An optional authority for the newly created package.
+See L<Class::MOP::Module/authority> for more details.
 
 =item * superclasses
 
@@ -2,7 +2,7 @@ package Class::MOP::Deprecated;
 BEGIN {
   $Class::MOP::Deprecated::AUTHORITY = 'cpan:STEVAN';
 }
-$Class::MOP::Deprecated::VERSION = '2.1204';
+$Class::MOP::Deprecated::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -26,7 +26,7 @@ Class::MOP::Deprecated - Manages deprecation warnings for Class::MOP
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,8 @@
-
 package Class::MOP::Instance;
 BEGIN {
   $Class::MOP::Instance::AUTHORITY = 'cpan:STEVAN';
 }
-$Class::MOP::Instance::VERSION = '2.1204';
+$Class::MOP::Instance::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -288,7 +287,7 @@ Class::MOP::Instance - Instance Meta Object
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,8 @@
-
 package Class::MOP::Method::Accessor;
 BEGIN {
   $Class::MOP::Method::Accessor::AUTHORITY = 'cpan:STEVAN';
 }
-$Class::MOP::Method::Accessor::VERSION = '2.1204';
+$Class::MOP::Method::Accessor::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -13,29 +12,27 @@ use Try::Tiny;
 
 use parent 'Class::MOP::Method::Generated';
 
-use Moose::Util 'throw_exception';
-
 sub new {
     my $class   = shift;
     my %options = @_;
 
     (exists $options{attribute})
-        || throw_exception( MustSupplyAnAttributeToConstructWith => params => \%options,
+        || $class->_throw_exception( MustSupplyAnAttributeToConstructWith => params => \%options,
                                                                     class  => $class,
                           );
 
     (exists $options{accessor_type})
-        || throw_exception( MustSupplyAnAccessorTypeToConstructWith => params => \%options,
+        || $class->_throw_exception( MustSupplyAnAccessorTypeToConstructWith => params => \%options,
                                                                        class  => $class,
                           );
 
     (blessed($options{attribute}) && $options{attribute}->isa('Class::MOP::Attribute'))
-        || throw_exception( MustSupplyAClassMOPAttributeInstance => params => \%options,
+        || $class->_throw_exception( MustSupplyAClassMOPAttributeInstance => params => \%options,
                                                                     class  => $class
                           );
 
     ($options{package_name} && $options{name})
-        || throw_exception( MustSupplyPackageNameAndName => params => \%options,
+        || $class->_throw_exception( MustSupplyPackageNameAndName => params => \%options,
                                                             class  => $class
                           );
 
@@ -126,7 +123,7 @@ sub _generate_accessor_method_inline {
         ]);
     }
     catch {
-        throw_exception( CouldNotGenerateInlineAttributeMethod => instance => $self,
+        $self->_throw_exception( CouldNotGenerateInlineAttributeMethod => instance => $self,
                                                                   error    => $_,
                                                                   option   => "accessor"
                        );
@@ -139,9 +136,9 @@ sub _generate_reader_method {
     my $class = $attr->associated_class;
 
     return sub {
-        throw_exception( CannotAssignValueToReadOnlyAccessor => class     => $class,
-                                                                value     => $_[1],
-                                                                attribute => $attr
+        $self->_throw_exception( CannotAssignValueToReadOnlyAccessor => class_name => $class->name,
+                                                                value      => $_[1],
+                                                                attribute  => $attr
                        )
             if @_ > 1;
         $attr->get_value($_[0]);
@@ -157,7 +154,7 @@ sub _generate_reader_method_inline {
         $self->_compile_code([
             'sub {',
                 'if (@_ > 1) {',
-                    $self->_inline_throw_exception( "CannotAssignValueToReadOnlyAccessor => ".
+                    $self->_inline_throw_exception( CannotAssignValueToReadOnlyAccessor =>
                                                     'class_name                          => ref $_[0],'.
                                                     'value                               => $_[1],'.
                                                     "attribute_name                      => '".$attr_name."'",
@@ -168,7 +165,7 @@ sub _generate_reader_method_inline {
         ]);
     }
     catch {
-        throw_exception( CouldNotGenerateInlineAttributeMethod => instance => $self,
+        $self->_throw_exception( CouldNotGenerateInlineAttributeMethod => instance => $self,
                                                                   error    => $_,
                                                                   option   => "reader"
                        );
@@ -176,8 +173,8 @@ sub _generate_reader_method_inline {
 }
 
 sub _inline_throw_exception {
-    my ( $self, $throw_args ) = @_;
-    return 'require Moose::Util; Moose::Util::throw_exception('.$throw_args.')';
+    my ( $self, $exception_type, $throw_args ) = @_;
+    return 'die Module::Runtime::use_module("Moose::Exception::' . $exception_type . '")->new(' . ($throw_args || '') . ')';
 }
 
 sub _generate_writer_method {
@@ -201,7 +198,7 @@ sub _generate_writer_method_inline {
         ]);
     }
     catch {
-        throw_exception( CouldNotGenerateInlineAttributeMethod => instance => $self,
+        $self->_throw_exception( CouldNotGenerateInlineAttributeMethod => instance => $self,
                                                                   error    => $_,
                                                                   option   => "writer"
                        );
@@ -229,7 +226,7 @@ sub _generate_predicate_method_inline {
         ]);
     }
     catch {
-        throw_exception( CouldNotGenerateInlineAttributeMethod => instance => $self,
+        $self->_throw_exception( CouldNotGenerateInlineAttributeMethod => instance => $self,
                                                                   error    => $_,
                                                                   option   => "predicate"
                        );
@@ -257,7 +254,7 @@ sub _generate_clearer_method_inline {
         ]);
     }
     catch {
-        throw_exception( CouldNotGenerateInlineAttributeMethod => instance => $self,
+        $self->_throw_exception( CouldNotGenerateInlineAttributeMethod => instance => $self,
                                                                   error    => $_,
                                                                   option   => "clearer"
                        );
@@ -280,7 +277,7 @@ Class::MOP::Method::Accessor - Method Meta Object for accessors
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -1,9 +1,8 @@
-
 package Class::MOP::Method::Constructor;
 BEGIN {
   $Class::MOP::Method::Constructor::AUTHORITY = 'cpan:STEVAN';
 }
-$Class::MOP::Method::Constructor::VERSION = '2.1204';
+$Class::MOP::Method::Constructor::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -13,19 +12,18 @@ use Try::Tiny;
 
 use parent 'Class::MOP::Method::Inlined';
 
-use Moose::Util 'throw_exception';
 sub new {
     my $class   = shift;
     my %options = @_;
 
     (blessed $options{metaclass} && $options{metaclass}->isa('Class::MOP::Class'))
-        || throw_exception( MustSupplyAMetaclass => params => \%options,
+        || $class->_throw_exception( MustSupplyAMetaclass => params => \%options,
                                                     class  => $class
                           )
             if $options{is_inline};
 
     ($options{package_name} && $options{name})
-        || throw_exception( MustSupplyPackageNameAndName => params => \%options,
+        || $class->_throw_exception( MustSupplyPackageNameAndName => params => \%options,
                                                             class  => $class
                           );
 
@@ -113,7 +111,7 @@ sub _generate_constructor_method_inline {
     }
     catch {
         my $source = join("\n", @source);
-        throw_exception( CouldNotEvalConstructor => constructor_method => $self,
+        $self->_throw_exception( CouldNotEvalConstructor => constructor_method => $self,
                                                     source             => $source,
                                                     error              => $_
                        );
@@ -138,7 +136,7 @@ Class::MOP::Method::Constructor - Method Meta Object for constructors
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -1,9 +1,8 @@
-
 package Class::MOP::Method::Generated;
 BEGIN {
   $Class::MOP::Method::Generated::AUTHORITY = 'cpan:STEVAN';
 }
-$Class::MOP::Method::Generated::VERSION = '2.1204';
+$Class::MOP::Method::Generated::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -11,16 +10,14 @@ use Eval::Closure;
 
 use parent 'Class::MOP::Method';
 
-use Moose::Util 'throw_exception';
-
 ## accessors
 
 sub new {
-    throw_exception( CannotCallAnAbstractBaseMethod => package_name => __PACKAGE__ );
+    $_[0]->_throw_exception( CannotCallAnAbstractBaseMethod => package_name => __PACKAGE__ );
 }
 
 sub _initialize_body {
-    throw_exception( NoBodyToInitializeInAnAbstractBaseClass => package_name => __PACKAGE__ );
+    $_[0]->_throw_exception( NoBodyToInitializeInAnAbstractBaseClass => package_name => __PACKAGE__ );
 }
 
 sub _generate_description {
@@ -81,7 +78,7 @@ Class::MOP::Method::Generated - Abstract base class for generated methods
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -2,7 +2,7 @@ package Class::MOP::Method::Inlined;
 BEGIN {
   $Class::MOP::Method::Inlined::AUTHORITY = 'cpan:STEVAN';
 }
-$Class::MOP::Method::Inlined::VERSION = '2.1204';
+$Class::MOP::Method::Inlined::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -121,7 +121,7 @@ Class::MOP::Method::Inlined - Method base class for methods which have been inli
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,8 @@
-
 package Class::MOP::Method::Meta;
 BEGIN {
   $Class::MOP::Method::Meta::AUTHORITY = 'cpan:STEVAN';
 }
-$Class::MOP::Method::Meta::VERSION = '2.1204';
+$Class::MOP::Method::Meta::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -51,8 +50,7 @@ sub wrap {
 
     unshift @args, 'body' if @args % 2 == 1;
     my %params = @args;
-    require Moose::Util;
-    Moose::Util::throw_exception( CannotOverrideBodyOfMetaMethods => params => \%params,
+    $class->_throw_exception( CannotOverrideBodyOfMetaMethods => params => \%params,
                                                                      class  => $class
                                 )
         if $params{body};
@@ -97,7 +95,7 @@ Class::MOP::Method::Meta - Method Meta Object for C<meta> methods
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,8 @@
-
 package Class::MOP::Method::Overload;
 BEGIN {
   $Class::MOP::Method::Overload::AUTHORITY = 'cpan:STEVAN';
 }
-$Class::MOP::Method::Overload::VERSION = '2.1204';
+$Class::MOP::Method::Overload::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -17,8 +16,7 @@ sub wrap {
     unshift @args, 'body' if @args % 2 == 1;
     my %params = @args;
 
-    require Moose::Util;
-    Moose::Util::throw_exception( OperatorIsRequired => params => \%params,
+    $class->_throw_exception( OperatorIsRequired => params => \%params,
                                                         class  => $class
                                 )
         unless exists $params{operator};
@@ -65,7 +63,7 @@ Class::MOP::Method::Overload - Method Meta Object for methods which implement ov
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,8 @@
-
 package Class::MOP::Method::Wrapped;
 BEGIN {
   $Class::MOP::Method::Wrapped::AUTHORITY = 'cpan:STEVAN';
 }
-$Class::MOP::Method::Wrapped::VERSION = '2.1204';
+$Class::MOP::Method::Wrapped::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -11,8 +10,6 @@ use Scalar::Util 'blessed';
 
 use parent 'Class::MOP::Method';
 
-use Moose::Util 'throw_exception';
-
 # NOTE:
 # this ugly beast is the result of trying
 # to micro optimize this as much as possible
@@ -72,7 +69,7 @@ sub wrap {
     my ( $class, $code, %params ) = @_;
 
     (blessed($code) && $code->isa('Class::MOP::Method'))
-        || throw_exception( CanOnlyWrapBlessedCode => params => \%params,
+        || $class->_throw_exception( CanOnlyWrapBlessedCode => params => \%params,
                                                       class  => $class,
                                                       code   => $code
                           );
@@ -216,7 +213,7 @@ Class::MOP::Method::Wrapped - Method Meta Object for methods with before/after/a
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,8 @@
-
 package Class::MOP::Method;
 BEGIN {
   $Class::MOP::Method::AUTHORITY = 'cpan:STEVAN';
 }
-$Class::MOP::Method::VERSION = '2.1204';
+$Class::MOP::Method::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -26,7 +25,6 @@ sub wrap {
     my %params = @args;
     my $code = $params{body};
 
-    require Moose::Util;
     if (blessed($code) && $code->isa(__PACKAGE__)) {
         my $method = $code->clone;
         delete $params{body};
@@ -34,14 +32,14 @@ sub wrap {
         return $method;
     }
     elsif (!ref $code || 'CODE' ne reftype($code)) {
-        Moose::Util::throw_exception( WrapTakesACodeRefToBless => params => \%params,
+        $class->_throw_exception( WrapTakesACodeRefToBless => params => \%params,
                                                                   class  => $class,
                                                                   code   => $code
                                     );
     }
 
     ($params{package_name} && $params{name})
-        || Moose::Util::throw_exception( PackageNameAndNameParamsNotGivenToWrap => params => \%params,
+        || $class->_throw_exception( PackageNameAndNameParamsNotGivenToWrap => params => \%params,
                                                                                    class  => $class,
                                                                                    code   => $code
                                        );
@@ -159,7 +157,7 @@ Class::MOP::Method - Method Meta Object
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -213,7 +211,7 @@ This returns a reference to the method's subroutine.
 
 =item B<< $metamethod->name >>
 
-This returns the method's name
+This returns the method's name.
 
 =item B<< $metamethod->package_name >>
 
@@ -2,7 +2,7 @@ package Class::MOP::MiniTrait;
 BEGIN {
   $Class::MOP::MiniTrait::AUTHORITY = 'cpan:STEVAN';
 }
-$Class::MOP::MiniTrait::VERSION = '2.1204';
+$Class::MOP::MiniTrait::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -18,6 +18,7 @@ sub apply {
 
     for my $meth ( grep { $_->package_name ne 'UNIVERSAL' } $trait->get_all_methods ) {
         my $meth_name = $meth->name;
+        next if index($meth_name, '__') == 0;   # skip private subs
 
         if ( $to_class->find_method_by_name($meth_name) ) {
             $to_class->add_around_method_modifier( $meth_name, $meth->body );
@@ -50,7 +51,7 @@ Class::MOP::MiniTrait - Extremely limited trait application
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -2,7 +2,7 @@ package Class::MOP::Mixin::AttributeCore;
 BEGIN {
   $Class::MOP::Mixin::AttributeCore::AUTHORITY = 'cpan:STEVAN';
 }
-$Class::MOP::Mixin::AttributeCore::VERSION = '2.1204';
+$Class::MOP::Mixin::AttributeCore::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -64,7 +64,7 @@ Class::MOP::Mixin::AttributeCore - Core attributes shared by attribute metaclass
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -2,7 +2,7 @@ package Class::MOP::Mixin::HasAttributes;
 BEGIN {
   $Class::MOP::Mixin::HasAttributes::AUTHORITY = 'cpan:STEVAN';
 }
-$Class::MOP::Mixin::HasAttributes::VERSION = '2.1204';
+$Class::MOP::Mixin::HasAttributes::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -10,8 +10,6 @@ use Scalar::Util 'blessed';
 
 use parent 'Class::MOP::Mixin';
 
-use Moose::Util 'throw_exception';
-
 sub add_attribute {
     my $self = shift;
 
@@ -19,8 +17,8 @@ sub add_attribute {
         = blessed( $_[0] ) ? $_[0] : $self->attribute_metaclass->new(@_);
 
     ( $attribute->isa('Class::MOP::Mixin::AttributeCore') )
-        || throw_exception( AttributeMustBeAnClassMOPMixinAttributeCoreOrSubclass => attribute => $attribute,
-                                                                                     class     => $self
+        || $self->_throw_exception( AttributeMustBeAnClassMOPMixinAttributeCoreOrSubclass => attribute  => $attribute,
+                                                                                     class_name => $self->name,
                           );
 
     $self->_attach_attribute($attribute);
@@ -50,7 +48,7 @@ sub has_attribute {
     my ( $self, $attribute_name ) = @_;
 
     ( defined $attribute_name )
-        || throw_exception( MustDefineAnAttributeName => class => $self );
+        || $self->_throw_exception( MustDefineAnAttributeName => class_name => $self->name );
 
     exists $self->_attribute_map->{$attribute_name};
 }
@@ -59,7 +57,7 @@ sub get_attribute {
     my ( $self, $attribute_name ) = @_;
 
     ( defined $attribute_name )
-        || throw_exception( MustDefineAnAttributeName => class => $self );
+        || $self->_throw_exception( MustDefineAnAttributeName => class_name => $self->name );
 
     return $self->_attribute_map->{$attribute_name};
 }
@@ -68,7 +66,7 @@ sub remove_attribute {
     my ( $self, $attribute_name ) = @_;
 
     ( defined $attribute_name )
-        || throw_exception( MustDefineAnAttributeName => class => $self );
+        || $self->_throw_exception( MustDefineAnAttributeName => class_name => $self->name );
 
     my $removed_attribute = $self->_attribute_map->{$attribute_name};
     return unless defined $removed_attribute;
@@ -111,7 +109,7 @@ Class::MOP::Mixin::HasAttributes - Methods for metaclasses which have attributes
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -2,7 +2,7 @@ package Class::MOP::Mixin::HasMethods;
 BEGIN {
   $Class::MOP::Mixin::HasMethods::AUTHORITY = 'cpan:STEVAN';
 }
-$Class::MOP::Mixin::HasMethods::VERSION = '2.1204';
+$Class::MOP::Mixin::HasMethods::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -15,7 +15,6 @@ use Sub::Name    'subname';
 use overload ();
 
 use parent 'Class::MOP::Mixin';
-require Moose::Util;
 
 sub _meta_method_class { 'Class::MOP::Method::Meta' }
 
@@ -40,7 +39,7 @@ sub wrap_method_body {
     my ( $self, %args ) = @_;
 
     ( $args{body} && 'CODE' eq reftype $args{body} )
-        || Moose::Util::throw_exception( CodeBlockMustBeACodeRef => instance => $self,
+        || $self->_throw_exception( CodeBlockMustBeACodeRef => instance => $self,
                                                                     params   => \%args
                                        );
     $self->method_metaclass->wrap(
@@ -52,7 +51,7 @@ sub wrap_method_body {
 sub add_method {
     my ( $self, $method_name, $method ) = @_;
     ( defined $method_name && length $method_name )
-        || Moose::Util::throw_exception( MustDefineAMethodName => instance => $self );
+        || $self->_throw_exception( MustDefineAMethodName => instance => $self );
 
     my $package_name = $self->name;
 
@@ -100,7 +99,7 @@ sub has_method {
     my ( $self, $method_name ) = @_;
 
     ( defined $method_name && length $method_name )
-        || Moose::Util::throw_exception( MustDefineAMethodName => instance => $self );
+        || $self->_throw_exception( MustDefineAMethodName => instance => $self );
 
     my $method = $self->_get_maybe_raw_method($method_name)
         or return;
@@ -112,7 +111,7 @@ sub get_method {
     my ( $self, $method_name ) = @_;
 
     ( defined $method_name && length $method_name )
-        || Moose::Util::throw_exception( MustDefineAMethodName => instance => $self );
+        || $self->_throw_exception( MustDefineAMethodName => instance => $self );
 
     my $method = $self->_get_maybe_raw_method($method_name)
         or return;
@@ -143,7 +142,7 @@ sub remove_method {
     my ( $self, $method_name ) = @_;
 
     ( defined $method_name && length $method_name )
-        || Moose::Util::throw_exception( MustDefineAMethodName => instance => $self );
+        || $self->_throw_exception( MustDefineAMethodName => instance => $self );
 
     my $removed_method = delete $self->_method_map->{$method_name};
 
@@ -337,7 +336,7 @@ Class::MOP::Mixin::HasMethods - Methods for metaclasses which have methods
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -2,17 +2,23 @@ package Class::MOP::Mixin;
 BEGIN {
   $Class::MOP::Mixin::AUTHORITY = 'cpan:STEVAN';
 }
-$Class::MOP::Mixin::VERSION = '2.1204';
+$Class::MOP::Mixin::VERSION = '2.1210';
 use strict;
 use warnings;
 
 use Scalar::Util 'blessed';
+use Module::Runtime 'use_module';
 
 sub meta {
     require Class::MOP::Class;
     Class::MOP::Class->initialize( blessed( $_[0] ) || $_[0] );
 }
 
+sub _throw_exception {
+    my ($class, $exception_type, @args_to_exception) = @_;
+    die use_module( "Moose::Exception::$exception_type" )->new( @args_to_exception );
+}
+
 1;
 
 # ABSTRACT: Base class for mixin classes
@@ -29,22 +35,26 @@ Class::MOP::Mixin - Base class for mixin classes
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
-This class provides a single method shared by all mixins
+This class provides a few methods which are useful in all metaclasses.
 
 =head1 METHODS
 
-This class provides a few methods which are useful in all metaclasses.
-
 =over 4
 
 =item B<< Class::MOP::Mixin->meta >>
 
 This returns a L<Class::MOP::Class> object for the mixin class.
 
+=item B<< Class::MOP::Mixin->_throw_exception >>
+
+Throws an exception in the L<Moose::Exception> family. This should ONLY be
+used internally -- any callers outside Class::MOP::* should be using the
+version in L<Moose::Util> instead.
+
 =back
 
 =head1 AUTHORS
@@ -1,9 +1,8 @@
-
 package Class::MOP::Module;
 BEGIN {
   $Class::MOP::Module::AUTHORITY = 'cpan:STEVAN';
 }
-$Class::MOP::Module::VERSION = '2.1204';
+$Class::MOP::Module::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -12,8 +11,6 @@ use Scalar::Util 'blessed';
 
 use parent 'Class::MOP::Package';
 
-use Moose::Util 'throw_exception';
-
 sub _new {
     my $class = shift;
     return Class::MOP::Class->initialize($class)->new_object(@_)
@@ -76,7 +73,7 @@ sub _anon_package_prefix { 'Class::MOP::Module::__ANON__::SERIAL::' }
 sub _anon_cache_key {
     my $class = shift;
     my %options = @_;
-    throw_exception( PackagesAndModulesAreNotCachable => class_name => $class,
+    $class->_throw_exception( PackagesAndModulesAreNotCachable => class_name => $class,
                                                          params     => \%options,
                                                          is_module  => 1
                    );
@@ -110,7 +107,7 @@ Class::MOP::Module - Module Meta Object
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -140,6 +137,8 @@ A version number, to be installed in the C<$VERSION> package global variable.
 
 An authority, to be installed in the C<$AUTHORITY> package global variable.
 
+This is a legacy field and its use is not recommended.
+
 =back
 
 =item B<< $metamodule->version >>
@@ -1,30 +1,24 @@
-
 package Class::MOP::Object;
 BEGIN {
   $Class::MOP::Object::AUTHORITY = 'cpan:STEVAN';
 }
-$Class::MOP::Object::VERSION = '2.1204';
+$Class::MOP::Object::VERSION = '2.1210';
 use strict;
 use warnings;
 
+use parent 'Class::MOP::Mixin';
 use Scalar::Util 'blessed';
+use Module::Runtime 'use_module';
 
 # introspection
 
 sub throw_error {
-    shift;
-    require Moose::Util;
-    Moose::Util::throw_exception( Legacy => message => join('', @_) );
+    shift->_throw_exception( Legacy => message => join('', @_) );
 }
 
 sub _inline_throw_error {
     my ( $self, $message ) = @_;
-    return 'Moose->throw_error('.$message.')';
-}
-
-sub meta {
-    require Class::MOP::Class;
-    Class::MOP::Class->initialize(blessed($_[0]) || $_[0]);
+    return 'die Module::Runtime::use_module("Moose::Exception::Legacy")->new(message => ' . $message. ')';
 }
 
 sub _new {
@@ -72,8 +66,7 @@ sub _make_compatible_with {
     my $new_metaclass = $self->_get_compatible_metaclass($other_name);
 
     unless ( defined $new_metaclass ) {
-        require Moose::Util;
-        Moose::Util::throw_exception( CannotMakeMetaclassCompatible => superclass_name => $other_name,
+        $self->_throw_exception( CannotMakeMetaclassCompatible => superclass_name => $other_name,
                                                                        class           => $self,
                                     );
     }
@@ -124,7 +117,7 @@ Class::MOP::Object - Base class for metaclasses
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -148,8 +141,8 @@ default maximum depth is 1.
 
 =item B<< $metaclass->throw_error($message) >>
 
-This method calls L<Moose::Util::throw_exception> internally, with an object
-of class Moose::Exception::Legacy.
+This method calls L<Class::MOP::Mixin/_throw_exception> internally, with an object
+of class L<Moose::Exception::Legacy>.
 
 =back
 
@@ -1,9 +1,8 @@
-
 package Class::MOP::Package;
 BEGIN {
   $Class::MOP::Package::AUTHORITY = 'cpan:STEVAN';
 }
-$Class::MOP::Package::VERSION = '2.1204';
+$Class::MOP::Package::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -15,8 +14,6 @@ use Package::Stash;
 
 use parent 'Class::MOP::Object';
 
-use Moose::Util 'throw_exception';
-
 # creation ...
 
 sub initialize {
@@ -54,7 +51,7 @@ sub reinitialize {
 
     (defined $package_name && $package_name
       && (!blessed $package_name || $package_name->isa('Class::MOP::Package')))
-        || throw_exception( MustPassAPackageNameOrAnExistingClassMOPPackageInstance => params => \%options,
+        || $class->_throw_exception( MustPassAPackageNameOrAnExistingClassMOPPackageInstance => params => \%options,
                                                                                        class  => $class
                           );
 
@@ -136,7 +133,7 @@ sub create {
     sub _anon_cache_key {
         my $class = shift;
         my %options = @_;
-        throw_exception( PackagesAndModulesAreNotCachable => class_name => $class,
+        $class->_throw_exception( PackagesAndModulesAreNotCachable => class_name => $class,
                                                              params     => \%options,
                                                              is_module  => 0
                        );
@@ -289,7 +286,7 @@ Class::MOP::Package - Package Meta Object
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -1,16 +1,14 @@
-
 package Class::MOP;
 BEGIN {
   $Class::MOP::AUTHORITY = 'cpan:STEVAN';
 }
-$Class::MOP::VERSION = '2.1204';
+$Class::MOP::VERSION = '2.1210';
 use strict;
 use warnings;
 
 use 5.008003;
 
 use MRO::Compat;
-
 use Class::Load 0.07 ();
 use Scalar::Util  'weaken', 'isweak', 'reftype', 'blessed';
 use Data::OptList;
@@ -744,7 +742,7 @@ Class::MOP - A Meta Object Protocol for Perl 5
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -34,7 +34,6 @@ use Dist::CheckConflicts
         'MooseX::Declare' => '0.35',
         'MooseX::FollowPBP' => '0.02',
         'MooseX::Getopt' => '0.56',
-        'MooseX::HasDefaults' => '0.02',
         'MooseX::InstanceTracking' => '0.04',
         'MooseX::LazyRequire' => '0.06',
         'MooseX::Meta::Attribute::Index' => '0.04',
@@ -71,6 +70,7 @@ use Dist::CheckConflicts
         'Test::CleanNamespaces' => '0.03',
         'Test::Moose::More' => '0.022',
         'Test::TempDir' => '0.05',
+        'Throwable' => '0.102080',
         'namespace::autoclean' => '0.08',
     },
 
@@ -92,7 +92,7 @@ Moose::Conflicts - Provide information on conflicts for Moose
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 AUTHORS
 
@@ -1,7 +1,4 @@
-package Moose::Cookbook::Basics::BankAccount_MethodModifiersAndSubclassing;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Cookbook::Basics::BankAccount_MethodModifiersAndSubclassing
 # ABSTRACT: Demonstrates the use of method modifiers in a subclass
 
 __END__
@@ -16,7 +13,7 @@ Moose::Cookbook::Basics::BankAccount_MethodModifiersAndSubclassing - Demonstrate
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -1,7 +1,4 @@
-package Moose::Cookbook::Basics::BinaryTree_AttributeFeatures;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Cookbook::Basics::BinaryTree_AttributeFeatures
 # ABSTRACT: Demonstrates various attribute features including lazy, predicates, weak refs, and more
 
 __END__
@@ -16,7 +13,7 @@ Moose::Cookbook::Basics::BinaryTree_AttributeFeatures - Demonstrates various att
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -1,7 +1,4 @@
-package Moose::Cookbook::Basics::BinaryTree_BuilderAndLazyBuild;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Cookbook::Basics::BinaryTree_BuilderAndLazyBuild
 # ABSTRACT: Builder methods and lazy_build
 
 __END__
@@ -16,7 +13,7 @@ Moose::Cookbook::Basics::BinaryTree_BuilderAndLazyBuild - Builder methods and la
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -1,7 +1,4 @@
-package Moose::Cookbook::Basics::Company_Subtypes;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Cookbook::Basics::Company_Subtypes
 # ABSTRACT: Demonstrates the use of subtypes and how to model classes related to companies, people, employees, etc.
 
 __END__
@@ -16,7 +13,7 @@ Moose::Cookbook::Basics::Company_Subtypes - Demonstrates the use of subtypes and
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -1,7 +1,4 @@
-package Moose::Cookbook::Basics::DateTime_ExtendingNonMooseParent;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Cookbook::Basics::DateTime_ExtendingNonMooseParent
 # ABSTRACT: Extending a non-Moose parent class
 
 __END__
@@ -16,7 +13,7 @@ Moose::Cookbook::Basics::DateTime_ExtendingNonMooseParent - Extending a non-Moos
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -1,7 +1,4 @@
-package Moose::Cookbook::Basics::Document_AugmentAndInner;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Cookbook::Basics::Document_AugmentAndInner
 # ABSTRACT: The augment modifier, which turns normal method overriding "inside-out"
 
 __END__
@@ -16,7 +13,7 @@ Moose::Cookbook::Basics::Document_AugmentAndInner - The augment modifier, which
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -1,7 +1,4 @@
-package Moose::Cookbook::Basics::Genome_OverloadingSubtypesAndCoercion;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Cookbook::Basics::Genome_OverloadingSubtypesAndCoercion
 # ABSTRACT: Operator overloading, subtypes, and coercion
 
 __END__
@@ -16,7 +13,7 @@ Moose::Cookbook::Basics::Genome_OverloadingSubtypesAndCoercion - Operator overlo
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -1,7 +1,4 @@
-package Moose::Cookbook::Basics::HTTP_SubtypesAndCoercion;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Cookbook::Basics::HTTP_SubtypesAndCoercion
 # ABSTRACT: Demonstrates subtypes and coercion use HTTP-related classes (Request, Protocol, etc.)
 
 __END__
@@ -16,7 +13,7 @@ Moose::Cookbook::Basics::HTTP_SubtypesAndCoercion - Demonstrates subtypes and co
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -1,7 +1,4 @@
-package Moose::Cookbook::Basics::Immutable;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Cookbook::Basics::Immutable
 # ABSTRACT: Making Moose fast by making your class immutable
 
 __END__
@@ -16,7 +13,7 @@ Moose::Cookbook::Basics::Immutable - Making Moose fast by making your class immu
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -1,7 +1,4 @@
-package Moose::Cookbook::Basics::Person_BUILDARGSAndBUILD;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Cookbook::Basics::Person_BUILDARGSAndBUILD
 # ABSTRACT: Using BUILDARGS and BUILD to hook into object construction
 
 __END__
@@ -16,7 +13,7 @@ Moose::Cookbook::Basics::Person_BUILDARGSAndBUILD - Using BUILDARGS and BUILD to
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -1,7 +1,4 @@
-package Moose::Cookbook::Basics::Point_AttributesAndSubclassing;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Cookbook::Basics::Point_AttributesAndSubclassing
 # ABSTRACT: Point and Point3D classes, showing basic attributes and subclassing.
 
 __END__
@@ -16,7 +13,7 @@ Moose::Cookbook::Basics::Point_AttributesAndSubclassing - Point and Point3D clas
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -1,7 +1,4 @@
-package Moose::Cookbook::Extending::Debugging_BaseClassRole;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Cookbook::Extending::Debugging_BaseClassRole
 # ABSTRACT: Providing a role for the base object class
 
 __END__
@@ -16,7 +13,7 @@ Moose::Cookbook::Extending::Debugging_BaseClassRole - Providing a role for the b
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -80,9 +77,7 @@ together rather than being overridden. Method modifiers require that a method
 exists in order to wrap, however, so we also provide a stub method to wrap if
 no C<BUILD> method exists in the class.
 
-=for testing-SETUP use Test::Requires {
-    'Test::Output' => '0',
-};
+=for testing-SETUP use Test::Requires 'Test::Output';
 
 =begin testing
 
@@ -1,7 +1,4 @@
-package Moose::Cookbook::Extending::ExtensionOverview;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Cookbook::Extending::ExtensionOverview
 # ABSTRACT: Moose extension overview
 
 __END__
@@ -16,7 +13,7 @@ Moose::Cookbook::Extending::ExtensionOverview - Moose extension overview
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -1,7 +1,4 @@
-package Moose::Cookbook::Extending::Mooseish_MooseSugar;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Cookbook::Extending::Mooseish_MooseSugar
 # ABSTRACT: Acting like Moose.pm and providing sugar Moose-style
 
 __END__
@@ -16,7 +13,7 @@ Moose::Cookbook::Extending::Mooseish_MooseSugar - Acting like Moose.pm and provi
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -1,7 +1,4 @@
-package Moose::Cookbook::Legacy::Debugging_BaseClassReplacement;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Cookbook::Legacy::Debugging_BaseClassReplacement
 # ABSTRACT: Providing an alternate base object class
 
 __END__
@@ -16,7 +13,7 @@ Moose::Cookbook::Legacy::Debugging_BaseClassReplacement - Providing an alternate
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -71,9 +68,7 @@ us in the first place.
 
 See the L<Moose::Exporter> docs for more details on its API.
 
-=for testing-SETUP use Test::Requires {
-    'Test::Output' => '0',
-};
+=for testing-SETUP use Test::Requires 'Test::Output';
 
 =head1 USING MyApp::UseMyBase
 
@@ -1,7 +1,4 @@
-package Moose::Cookbook::Meta::Labeled_AttributeMetaclass;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Cookbook::Legacy::Labeled_AttributeMetaclass
 # ABSTRACT: A meta-attribute, attributes with labels
 
 __END__
@@ -12,11 +9,11 @@ __END__
 
 =head1 NAME
 
-Moose::Cookbook::Meta::Labeled_AttributeMetaclass - A meta-attribute, attributes with labels
+Moose::Cookbook::Legacy::Labeled_AttributeMetaclass - A meta-attribute, attributes with labels
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -1,7 +1,4 @@
-package Moose::Cookbook::Meta::Table_ClassMetaclass;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Cookbook::Legacy::Table_ClassMetaclass
 # ABSTRACT: Adding a "table" attribute to the metaclass
 
 __END__
@@ -12,11 +9,11 @@ __END__
 
 =head1 NAME
 
-Moose::Cookbook::Meta::Table_ClassMetaclass - Adding a "table" attribute to the metaclass
+Moose::Cookbook::Legacy::Table_ClassMetaclass - Adding a "table" attribute to the metaclass
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -1,7 +1,4 @@
-package Moose::Cookbook::Meta::GlobRef_InstanceMetaclass;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Cookbook::Meta::GlobRef_InstanceMetaclass
 # ABSTRACT: Creating a glob reference meta-instance class
 
 __END__
@@ -16,7 +13,7 @@ Moose::Cookbook::Meta::GlobRef_InstanceMetaclass - Creating a glob reference met
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -1,7 +1,4 @@
-package Moose::Cookbook::Meta::Labeled_AttributeTrait;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Cookbook::Meta::Labeled_AttributeTrait
 # ABSTRACT: Labels implemented via attribute traits
 
 __END__
@@ -16,7 +13,7 @@ Moose::Cookbook::Meta::Labeled_AttributeTrait - Labels implemented via attribute
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -1,7 +1,4 @@
-package Moose::Cookbook::Meta::PrivateOrPublic_MethodMetaclass;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Cookbook::Meta::PrivateOrPublic_MethodMetaclass
 # ABSTRACT: A method metaclass for marking methods public or private
 
 __END__
@@ -16,7 +13,7 @@ Moose::Cookbook::Meta::PrivateOrPublic_MethodMetaclass - A method metaclass for
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -1,7 +1,4 @@
-package Moose::Cookbook::Meta::Table_MetaclassTrait;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Cookbook::Meta::Table_MetaclassTrait
 # ABSTRACT: Adding a "table" attribute as a metaclass trait
 
 __END__
@@ -16,7 +13,7 @@ Moose::Cookbook::Meta::Table_MetaclassTrait - Adding a "table" attribute as a me
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -1,7 +1,4 @@
-package Moose::Cookbook::Meta::WhyMeta;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Cookbook::Meta::WhyMeta
 # ABSTRACT: Welcome to the meta world (Why Go Meta?)
 
 __END__
@@ -16,7 +13,7 @@ Moose::Cookbook::Meta::WhyMeta - Welcome to the meta world (Why Go Meta?)
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SUMMARY
 
@@ -1,7 +1,4 @@
-package Moose::Cookbook::Roles::ApplicationToInstance;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Cookbook::Roles::ApplicationToInstance
 # ABSTRACT: Applying a role to an object instance
 
 __END__
@@ -16,7 +13,7 @@ Moose::Cookbook::Roles::ApplicationToInstance - Applying a role to an object ins
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -1,7 +1,4 @@
-package Moose::Cookbook::Roles::Comparable_CodeReuse;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Cookbook::Roles::Comparable_CodeReuse
 # ABSTRACT: Using roles for code reuse
 
 __END__
@@ -16,7 +13,7 @@ Moose::Cookbook::Roles::Comparable_CodeReuse - Using roles for code reuse
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -1,7 +1,4 @@
-package Moose::Cookbook::Roles::Restartable_AdvancedComposition;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Cookbook::Roles::Restartable_AdvancedComposition
 # ABSTRACT: Advanced Role Composition - method exclusion and aliasing
 
 __END__
@@ -16,7 +13,7 @@ Moose::Cookbook::Roles::Restartable_AdvancedComposition - Advanced Role Composit
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -1,7 +1,4 @@
-package Moose::Cookbook::Snack::Keywords;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Cookbook::Snack::Keywords
 # ABSTRACT: Restricted "keywords" in Moose
 
 __END__
@@ -16,7 +13,7 @@ Moose::Cookbook::Snack::Keywords - Restricted "keywords" in Moose
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -1,7 +1,4 @@
-package Moose::Cookbook::Snack::Types;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Cookbook::Snack::Types
 # ABSTRACT: Snippets of code for using Types and Type Constraints
 
 __END__
@@ -16,7 +13,7 @@ Moose::Cookbook::Snack::Types - Snippets of code for using Types and Type Constr
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -1,7 +1,4 @@
-package Moose::Cookbook::Style;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Cookbook::Style
 # ABSTRACT: Expanded into Moose::Manual::BestPractices, so go read that
 
 __END__
@@ -16,7 +13,7 @@ Moose::Cookbook::Style - Expanded into Moose::Manual::BestPractices, so go read
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -1,7 +1,4 @@
-package Moose::Cookbook;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Cookbook
 # ABSTRACT: How to cook a Moose
 
 __END__
@@ -16,7 +13,7 @@ Moose::Cookbook - How to cook a Moose
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -2,7 +2,7 @@ package Moose::Deprecated;
 BEGIN {
   $Moose::Deprecated::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Deprecated::VERSION = '2.1204';
+$Moose::Deprecated::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -29,7 +29,7 @@ Moose::Deprecated - Manages deprecation warnings for Moose
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -2,7 +2,7 @@ package Moose::Exception::AccessorMustReadWrite;
 BEGIN {
   $Moose::Exception::AccessorMustReadWrite::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::AccessorMustReadWrite::VERSION = '2.1204';
+$Moose::Exception::AccessorMustReadWrite::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::InvalidAttributeOptions';
@@ -2,7 +2,7 @@ package Moose::Exception::AddParameterizableTypeTakesParameterizableType;
 BEGIN {
   $Moose::Exception::AddParameterizableTypeTakesParameterizableType::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::AddParameterizableTypeTakesParameterizableType::VERSION = '2.1204';
+$Moose::Exception::AddParameterizableTypeTakesParameterizableType::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::AddRoleTakesAMooseMetaRoleInstance;
 BEGIN {
   $Moose::Exception::AddRoleTakesAMooseMetaRoleInstance::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::AddRoleTakesAMooseMetaRoleInstance::VERSION = '2.1204';
+$Moose::Exception::AddRoleTakesAMooseMetaRoleInstance::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -2,7 +2,7 @@ package Moose::Exception::AddRoleToARoleTakesAMooseMetaRole;
 BEGIN {
   $Moose::Exception::AddRoleToARoleTakesAMooseMetaRole::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::AddRoleToARoleTakesAMooseMetaRole::VERSION = '2.1204';
+$Moose::Exception::AddRoleToARoleTakesAMooseMetaRole::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role';
@@ -2,7 +2,7 @@ package Moose::Exception::ApplyTakesABlessedInstance;
 BEGIN {
   $Moose::Exception::ApplyTakesABlessedInstance::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::ApplyTakesABlessedInstance::VERSION = '2.1204';
+$Moose::Exception::ApplyTakesABlessedInstance::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role';
@@ -2,7 +2,7 @@ package Moose::Exception::AttachToClassNeedsAClassMOPClassInstanceOrASubclass;
 BEGIN {
   $Moose::Exception::AttachToClassNeedsAClassMOPClassInstanceOrASubclass::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::AttachToClassNeedsAClassMOPClassInstanceOrASubclass::VERSION = '2.1204';
+$Moose::Exception::AttachToClassNeedsAClassMOPClassInstanceOrASubclass::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Attribute';
@@ -2,14 +2,14 @@ package Moose::Exception::AttributeConflictInRoles;
 BEGIN {
   $Moose::Exception::AttributeConflictInRoles::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::AttributeConflictInRoles::VERSION = '2.1204';
+$Moose::Exception::AttributeConflictInRoles::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role';
 
-has 'second_role' => (
+has 'second_role_name' => (
     is       => 'ro',
-    isa      => 'Moose::Meta::Role',
+    isa      => 'Str',
     required => 1
 );
 
@@ -20,12 +20,14 @@ has 'attribute_name' => (
 );
 
 sub _build_message {
-    my $self = shift;
-    "Role '". $self->role->name
-    . "' has encountered an attribute conflict"
-    . " while being composed into '".$self->second_role->name."'."
+    my $self             = shift;
+    my $role_name        = $self->role_name;
+    my $second_role_name = $self->second_role_name;
+    my $attribute_name   = $self->attribute_name;
+    "Role '$role_name' has encountered an attribute conflict"
+    . " while being composed into '$second_role_name'."
     . " This is a fatal error and cannot be disambiguated."
-    . " The conflicting attribute is named '".$self->attribute_name."'.";
+    . " The conflicting attribute is named '$attribute_name'.";
 }
 
 1;
@@ -2,22 +2,22 @@ package Moose::Exception::AttributeConflictInSummation;
 BEGIN {
   $Moose::Exception::AttributeConflictInSummation::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::AttributeConflictInSummation::VERSION = '2.1204';
+$Moose::Exception::AttributeConflictInSummation::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role', 'Moose::Exception::Role::AttributeName';
 
-has 'second_role' => (
+has 'second_role_name' => (
     is         => 'ro',
-    isa        => 'Moose::Meta::Role',
+    isa        => 'Str',
     required   => 1,
 );
 
 sub _build_message {
     my $self = shift;
 
-    my $role1 = $self->role_name;
-    my $role2 = $self->second_role->name;
+    my $role1     = $self->role_name;
+    my $role2     = $self->second_role_name;
     my $attr_name = $self->attribute_name;
 
     return "We have encountered an attribute conflict with '$attr_name'"
@@ -2,7 +2,7 @@ package Moose::Exception::AttributeExtensionIsNotSupportedInRoles;
 BEGIN {
   $Moose::Exception::AttributeExtensionIsNotSupportedInRoles::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::AttributeExtensionIsNotSupportedInRoles::VERSION = '2.1204';
+$Moose::Exception::AttributeExtensionIsNotSupportedInRoles::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role';
@@ -2,24 +2,18 @@ package Moose::Exception::AttributeIsRequired;
 BEGIN {
   $Moose::Exception::AttributeIsRequired::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::AttributeIsRequired::VERSION = '2.1204';
+$Moose::Exception::AttributeIsRequired::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
 
-use Moose::Util 'throw_exception';
-
 has 'attribute_name' => (
-    is         => 'ro',
-    isa        => 'Str',
-    lazy_build => 1
-);
-
-has 'attribute' => (
-    is        => 'ro',
-    isa       => 'Class::MOP::Attribute',
-    # predicate => 'has_attribute',
-    lazy_build => 1
+    is            => 'ro',
+    isa           => 'Str',
+    required      => 1,
+    documentation => "This attribute can be used for fetching attribute instance:\n".
+                     "    my \$class = Moose::Util::find_meta( \$exception->class_name );\n".
+                     "    my \$attribute = \$class->get_attribute( \$exception->attribute_name );\n",
 );
 
 has 'params' => (
@@ -28,74 +22,6 @@ has 'params' => (
     predicate => 'has_params',
 );
 
-sub _build_attribute {
-    my $self = shift;
-    if( $self->has_attribute_name &&
-        $self->is_class_name_set ) {
-        $self->class->get_attribute( $self->attribute_name );
-    }
-}
-
-sub _build_class {
-    my $self = shift;
-    if( $self->has_attribute ) {
-        return $self->attribute->associated_class;
-    } elsif( $self->is_class_name_set ) {
-        return Class::MOP::class_of( $self->class_name );
-    }
-};
-
-sub _build_class_name {
-    my $self = shift;
-    return $self->class->name;
-}
-
-sub _has_class_or_class_name {
-    my $self = shift;
-
-    if( $self->has_attribute ) {
-        return 1;
-    } else {
-        return $self->is_class_name_set ||
-               $self->is_class_set;
-    }
-}
-
-sub _build_attribute_name {
-    my $self = shift;
-    if( $self->has_attribute ) {
-        return $self->attribute->name;
-    } else {
-        throw_exception( "NeitherAttributeNorAttributeNameIsGiven" );
-    }
-}
-
-after "BUILD" => sub {
-    my $self = $_[0];
-
-    if( $self->has_attribute_name &&
-        $self->has_attribute &&
-        ( $self->attribute->name ne $self->attribute_name ) )
-    {
-        throw_exception( AttributeNamesDoNotMatch => attribute_name => $self->attribute_name,
-                                                     attribute      => $self->attribute
-                       );
-    } elsif( !$self->has_attribute &&
-             !$self->is_class_name_set &&
-             !$self->is_class_set ) {
-        throw_exception( "NeitherClassNorClassNameIsGiven" );
-    } elsif( !$self->has_attribute &&
-             !$self->has_attribute_name ) {
-        throw_exception( "NeitherAttributeNorAttributeNameIsGiven" );
-    } elsif( $self->is_class_name_set &&
-             $self->has_attribute &&
-             ( $self->class_name ne $self->class->name ) ) {
-        throw_exception( ClassNamesDoNotMatch => class_name => $self->class_name,
-                                                 class      => $self->class,
-                       );
-    }
-};
-
 sub _build_message {
     my $self = shift;
     "Attribute (".$self->attribute_name.") is required";
@@ -2,7 +2,7 @@ package Moose::Exception::AttributeMustBeAnClassMOPMixinAttributeCoreOrSubclass;
 BEGIN {
   $Moose::Exception::AttributeMustBeAnClassMOPMixinAttributeCoreOrSubclass::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::AttributeMustBeAnClassMOPMixinAttributeCoreOrSubclass::VERSION = '2.1204';
+$Moose::Exception::AttributeMustBeAnClassMOPMixinAttributeCoreOrSubclass::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -2,7 +2,7 @@ package Moose::Exception::AttributeNamesDoNotMatch;
 BEGIN {
   $Moose::Exception::AttributeNamesDoNotMatch::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::AttributeNamesDoNotMatch::VERSION = '2.1204';
+$Moose::Exception::AttributeNamesDoNotMatch::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::AttributeValueIsNotAnObject;
 BEGIN {
   $Moose::Exception::AttributeValueIsNotAnObject::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::AttributeValueIsNotAnObject::VERSION = '2.1204';
+$Moose::Exception::AttributeValueIsNotAnObject::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Instance', 'Moose::Exception::Role::Attribute';
@@ -2,7 +2,7 @@ package Moose::Exception::AttributeValueIsNotDefined;
 BEGIN {
   $Moose::Exception::AttributeValueIsNotDefined::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::AttributeValueIsNotDefined::VERSION = '2.1204';
+$Moose::Exception::AttributeValueIsNotDefined::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Instance', 'Moose::Exception::Role::Attribute';
@@ -2,7 +2,7 @@ package Moose::Exception::AutoDeRefNeedsArrayRefOrHashRef;
 BEGIN {
   $Moose::Exception::AutoDeRefNeedsArrayRefOrHashRef::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::AutoDeRefNeedsArrayRefOrHashRef::VERSION = '2.1204';
+$Moose::Exception::AutoDeRefNeedsArrayRefOrHashRef::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::InvalidAttributeOptions';
@@ -2,7 +2,7 @@ package Moose::Exception::BadOptionFormat;
 BEGIN {
   $Moose::Exception::BadOptionFormat::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::BadOptionFormat::VERSION = '2.1204';
+$Moose::Exception::BadOptionFormat::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Attribute';
@@ -2,7 +2,7 @@ package Moose::Exception::BothBuilderAndDefaultAreNotAllowed;
 BEGIN {
   $Moose::Exception::BothBuilderAndDefaultAreNotAllowed::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::BothBuilderAndDefaultAreNotAllowed::VERSION = '2.1204';
+$Moose::Exception::BothBuilderAndDefaultAreNotAllowed::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -2,7 +2,7 @@ package Moose::Exception::BuilderDoesNotExist;
 BEGIN {
   $Moose::Exception::BuilderDoesNotExist::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::BuilderDoesNotExist::VERSION = '2.1204';
+$Moose::Exception::BuilderDoesNotExist::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Attribute', 'Moose::Exception::Role::Instance';
@@ -2,7 +2,7 @@ package Moose::Exception::BuilderMethodNotSupportedForAttribute;
 BEGIN {
   $Moose::Exception::BuilderMethodNotSupportedForAttribute::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::BuilderMethodNotSupportedForAttribute::VERSION = '2.1204';
+$Moose::Exception::BuilderMethodNotSupportedForAttribute::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Attribute', 'Moose::Exception::Role::Instance';
@@ -2,7 +2,7 @@ package Moose::Exception::BuilderMethodNotSupportedForInlineAttribute;
 BEGIN {
   $Moose::Exception::BuilderMethodNotSupportedForInlineAttribute::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::BuilderMethodNotSupportedForInlineAttribute::VERSION = '2.1204';
+$Moose::Exception::BuilderMethodNotSupportedForInlineAttribute::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Instance', 'Moose::Exception::Role::Class';
@@ -2,7 +2,7 @@ package Moose::Exception::BuilderMustBeAMethodName;
 BEGIN {
   $Moose::Exception::BuilderMustBeAMethodName::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::BuilderMustBeAMethodName::VERSION = '2.1204';
+$Moose::Exception::BuilderMustBeAMethodName::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -2,7 +2,7 @@ package Moose::Exception::CallingMethodOnAnImmutableInstance;
 BEGIN {
   $Moose::Exception::CallingMethodOnAnImmutableInstance::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CallingMethodOnAnImmutableInstance::VERSION = '2.1204';
+$Moose::Exception::CallingMethodOnAnImmutableInstance::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::CallingReadOnlyMethodOnAnImmutableInstance;
 BEGIN {
   $Moose::Exception::CallingReadOnlyMethodOnAnImmutableInstance::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CallingReadOnlyMethodOnAnImmutableInstance::VERSION = '2.1204';
+$Moose::Exception::CallingReadOnlyMethodOnAnImmutableInstance::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,19 +2,15 @@ package Moose::Exception::CanExtendOnlyClasses;
 BEGIN {
   $Moose::Exception::CanExtendOnlyClasses::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CanExtendOnlyClasses::VERSION = '2.1204';
+$Moose::Exception::CanExtendOnlyClasses::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
-
-has 'role' => (
-    is       => 'ro',
-    isa      => 'Moose::Meta::Role',
-    required => 1,
-);
+with 'Moose::Exception::Role::Role';
 
 sub _build_message {
-    my $self = shift;
-    "You cannot inherit from a Moose Role (".$self->role->name.")";
+    my $self      = shift;
+    my $role_name = $self->role_name;
+    return "You cannot inherit from a Moose Role ($role_name)";
 }
 
 1;
@@ -2,7 +2,7 @@ package Moose::Exception::CanOnlyConsumeRole;
 BEGIN {
   $Moose::Exception::CanOnlyConsumeRole::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CanOnlyConsumeRole::VERSION = '2.1204';
+$Moose::Exception::CanOnlyConsumeRole::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::CanOnlyWrapBlessedCode;
 BEGIN {
   $Moose::Exception::CanOnlyWrapBlessedCode::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CanOnlyWrapBlessedCode::VERSION = '2.1204';
+$Moose::Exception::CanOnlyWrapBlessedCode::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -2,14 +2,15 @@ package Moose::Exception::CanReblessOnlyIntoASubclass;
 BEGIN {
   $Moose::Exception::CanReblessOnlyIntoASubclass::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CanReblessOnlyIntoASubclass::VERSION = '2.1204';
+$Moose::Exception::CanReblessOnlyIntoASubclass::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
-with 'Moose::Exception::Role::ParamsHash', 'Moose::Exception::Role::Class', 'Moose::Exception::Role::Instance';
+with 'Moose::Exception::Role::ParamsHash', 'Moose::Exception::Role::Class', 'Moose::Exception::Role::Instance', 'Moose::Exception::Role::InstanceClass';
 
 sub _build_message {
-    my $self = shift;
-    "You may rebless only into a subclass of (".blessed( $self->instance )."), of which (". $self->class->name .") isn't."
+    my $self           = shift;
+    my $instance_class = $self->instance_class;
+    "You may rebless only into a subclass of ($instance_class), of which (". $self->class_name .") isn't."
 }
 
 1;
@@ -2,14 +2,14 @@ package Moose::Exception::CanReblessOnlyIntoASuperclass;
 BEGIN {
   $Moose::Exception::CanReblessOnlyIntoASuperclass::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CanReblessOnlyIntoASuperclass::VERSION = '2.1204';
+$Moose::Exception::CanReblessOnlyIntoASuperclass::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
-with 'Moose::Exception::Role::Class', 'Moose::Exception::Role::Instance';
+with 'Moose::Exception::Role::Class', 'Moose::Exception::Role::Instance', 'Moose::Exception::Role::InstanceClass';
 
 sub _build_message {
     my $self = shift;
-    "You may rebless only into a superclass of (".blessed( $self->instance )."), of which (". $self->class->name .") isn't."
+    "You may rebless only into a superclass of (".blessed( $self->instance )."), of which (". $self->class_name .") isn't."
 }
 
 1;
@@ -2,7 +2,7 @@ package Moose::Exception::CannotAddAdditionalTypeCoercionsToUnion;
 BEGIN {
   $Moose::Exception::CannotAddAdditionalTypeCoercionsToUnion::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotAddAdditionalTypeCoercionsToUnion::VERSION = '2.1204';
+$Moose::Exception::CannotAddAdditionalTypeCoercionsToUnion::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::CannotAddAsAnAttributeToARole;
 BEGIN {
   $Moose::Exception::CannotAddAsAnAttributeToARole::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotAddAsAnAttributeToARole::VERSION = '2.1204';
+$Moose::Exception::CannotAddAsAnAttributeToARole::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role';
@@ -2,7 +2,7 @@ package Moose::Exception::CannotApplyBaseClassRolesToRole;
 BEGIN {
   $Moose::Exception::CannotApplyBaseClassRolesToRole::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotApplyBaseClassRolesToRole::VERSION = '2.1204';
+$Moose::Exception::CannotApplyBaseClassRolesToRole::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash', 'Moose::Exception::Role::Role';
@@ -2,7 +2,7 @@ package Moose::Exception::CannotAssignValueToReadOnlyAccessor;
 BEGIN {
   $Moose::Exception::CannotAssignValueToReadOnlyAccessor::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotAssignValueToReadOnlyAccessor::VERSION = '2.1204';
+$Moose::Exception::CannotAssignValueToReadOnlyAccessor::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class', 'Moose::Exception::Role::EitherAttributeOrAttributeName';
@@ -2,7 +2,7 @@ package Moose::Exception::CannotAugmentIfLocalMethodPresent;
 BEGIN {
   $Moose::Exception::CannotAugmentIfLocalMethodPresent::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotAugmentIfLocalMethodPresent::VERSION = '2.1204';
+$Moose::Exception::CannotAugmentIfLocalMethodPresent::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class', 'Moose::Exception::Role::Method';
@@ -2,7 +2,7 @@ package Moose::Exception::CannotAugmentNoSuperMethod;
 BEGIN {
   $Moose::Exception::CannotAugmentNoSuperMethod::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotAugmentNoSuperMethod::VERSION = '2.1204';
+$Moose::Exception::CannotAugmentNoSuperMethod::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -2,7 +2,7 @@ package Moose::Exception::CannotAutoDerefWithoutIsa;
 BEGIN {
   $Moose::Exception::CannotAutoDerefWithoutIsa::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotAutoDerefWithoutIsa::VERSION = '2.1204';
+$Moose::Exception::CannotAutoDerefWithoutIsa::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::InvalidAttributeOptions';
@@ -2,7 +2,7 @@ package Moose::Exception::CannotAutoDereferenceTypeConstraint;
 BEGIN {
   $Moose::Exception::CannotAutoDereferenceTypeConstraint::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotAutoDereferenceTypeConstraint::VERSION = '2.1204';
+$Moose::Exception::CannotAutoDereferenceTypeConstraint::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Attribute', 'Moose::Exception::Role::Instance', 'Moose::Exception::Role::TypeConstraint';
@@ -2,7 +2,7 @@ package Moose::Exception::CannotCalculateNativeType;
 BEGIN {
   $Moose::Exception::CannotCalculateNativeType::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotCalculateNativeType::VERSION = '2.1204';
+$Moose::Exception::CannotCalculateNativeType::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Instance';
@@ -2,7 +2,7 @@ package Moose::Exception::CannotCallAnAbstractBaseMethod;
 BEGIN {
   $Moose::Exception::CannotCallAnAbstractBaseMethod::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotCallAnAbstractBaseMethod::VERSION = '2.1204';
+$Moose::Exception::CannotCallAnAbstractBaseMethod::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::CannotCallAnAbstractMethod;
 BEGIN {
   $Moose::Exception::CannotCallAnAbstractMethod::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotCallAnAbstractMethod::VERSION = '2.1204';
+$Moose::Exception::CannotCallAnAbstractMethod::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::CannotCoerceAWeakRef;
 BEGIN {
   $Moose::Exception::CannotCoerceAWeakRef::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotCoerceAWeakRef::VERSION = '2.1204';
+$Moose::Exception::CannotCoerceAWeakRef::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::InvalidAttributeOptions';
@@ -2,7 +2,7 @@ package Moose::Exception::CannotCoerceAttributeWhichHasNoCoercion;
 BEGIN {
   $Moose::Exception::CannotCoerceAttributeWhichHasNoCoercion::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotCoerceAttributeWhichHasNoCoercion::VERSION = '2.1204';
+$Moose::Exception::CannotCoerceAttributeWhichHasNoCoercion::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::InvalidAttributeOptions', 'Moose::Exception::Role::TypeConstraint';
@@ -2,7 +2,7 @@ package Moose::Exception::CannotCreateHigherOrderTypeWithoutATypeParameter;
 BEGIN {
   $Moose::Exception::CannotCreateHigherOrderTypeWithoutATypeParameter::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotCreateHigherOrderTypeWithoutATypeParameter::VERSION = '2.1204';
+$Moose::Exception::CannotCreateHigherOrderTypeWithoutATypeParameter::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::TypeConstraint';
@@ -2,14 +2,14 @@ package Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresent;
 BEGIN {
   $Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresent::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresent::VERSION = '2.1204';
+$Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresent::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role', 'Moose::Exception::Role::Method';
 
-has 'role_being_applied' => (
+has 'role_being_applied_name' => (
     is       => 'ro',
-    isa      => 'Moose::Meta::Role',
+    isa      => 'Str',
     required => 1
 );
 
@@ -2,7 +2,7 @@ package Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresentInClass;
 BEGIN {
   $Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresentInClass::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresentInClass::VERSION = '2.1204';
+$Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresentInClass::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role', 'Moose::Exception::Role::Method', 'Moose::Exception::Role::Class';
@@ -2,7 +2,7 @@ package Moose::Exception::CannotDelegateLocalMethodIsPresent;
 BEGIN {
   $Moose::Exception::CannotDelegateLocalMethodIsPresent::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotDelegateLocalMethodIsPresent::VERSION = '2.1204';
+$Moose::Exception::CannotDelegateLocalMethodIsPresent::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Attribute', 'Moose::Exception::Role::Method';
@@ -2,7 +2,7 @@ package Moose::Exception::CannotDelegateWithoutIsa;
 BEGIN {
   $Moose::Exception::CannotDelegateWithoutIsa::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotDelegateWithoutIsa::VERSION = '2.1204';
+$Moose::Exception::CannotDelegateWithoutIsa::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Attribute';
@@ -2,7 +2,7 @@ package Moose::Exception::CannotFindDelegateMetaclass;
 BEGIN {
   $Moose::Exception::CannotFindDelegateMetaclass::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotFindDelegateMetaclass::VERSION = '2.1204';
+$Moose::Exception::CannotFindDelegateMetaclass::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Attribute';
@@ -2,7 +2,7 @@ package Moose::Exception::CannotFindType;
 BEGIN {
   $Moose::Exception::CannotFindType::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotFindType::VERSION = '2.1204';
+$Moose::Exception::CannotFindType::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::CannotFindTypeGivenToMatchOnType;
 BEGIN {
   $Moose::Exception::CannotFindTypeGivenToMatchOnType::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotFindTypeGivenToMatchOnType::VERSION = '2.1204';
+$Moose::Exception::CannotFindTypeGivenToMatchOnType::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::CannotFixMetaclassCompatibility;
 BEGIN {
   $Moose::Exception::CannotFixMetaclassCompatibility::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotFixMetaclassCompatibility::VERSION = '2.1204';
+$Moose::Exception::CannotFixMetaclassCompatibility::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -2,15 +2,17 @@ package Moose::Exception::CannotGenerateInlineConstraint;
 BEGIN {
   $Moose::Exception::CannotGenerateInlineConstraint::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotGenerateInlineConstraint::VERSION = '2.1204';
+$Moose::Exception::CannotGenerateInlineConstraint::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::TypeConstraint';
 
-has 'parameterizable_type_object' => (
-    is       => 'ro',
-    isa      => 'Moose::Meta::TypeConstraint::Parameterizable',
-    required => 1
+has 'parameterizable_type_object_name' => (
+    is            => 'ro',
+    isa           => 'Str',
+    required      => 1,
+    documentation => "This attribute can be used for fetching parameterizable type constraint(Moose::Meta::TypeConstraint::Parameterizable):\n".
+                     "    my \$type_constraint =  Moose::Util::TypeConstraints::find_type_constraint( \$exception->type_name );\n",
 );
 
 has 'value' => (
@@ -21,7 +23,7 @@ has 'value' => (
 
 sub _build_message {
     my $self = shift;
-    my $type = $self->type;
+    my $type = $self->type_name;
 
     return "Can't generate an inline constraint for $type, since none was defined";
 }
@@ -2,7 +2,7 @@ package Moose::Exception::CannotInitializeMooseMetaRoleComposite;
 BEGIN {
   $Moose::Exception::CannotInitializeMooseMetaRoleComposite::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotInitializeMooseMetaRoleComposite::VERSION = '2.1204';
+$Moose::Exception::CannotInitializeMooseMetaRoleComposite::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::CannotInlineTypeConstraintCheck;
 BEGIN {
   $Moose::Exception::CannotInlineTypeConstraintCheck::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotInlineTypeConstraintCheck::VERSION = '2.1204';
+$Moose::Exception::CannotInlineTypeConstraintCheck::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::TypeConstraint';
@@ -2,10 +2,10 @@ package Moose::Exception::CannotLocatePackageInINC;
 BEGIN {
   $Moose::Exception::CannotLocatePackageInINC::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotLocatePackageInINC::VERSION = '2.1204';
+$Moose::Exception::CannotLocatePackageInINC::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
-with 'Moose::Exception::Role::TypeConstraint', 'Moose::Exception::Role::ParamsHash';
+with 'Moose::Exception::Role::ParamsHash';
 
 has 'INC' => (
     is       => 'ro',
@@ -25,6 +25,12 @@ has 'metaclass_name' => (
     required => 1
 );
 
+has 'type' => (
+    is       => 'ro',
+    isa      => 'Str',
+    required => 1,
+);
+
 sub _build_message {
     my $self = shift;
     my $possible_packages = $self->possible_packages;
@@ -2,7 +2,7 @@ package Moose::Exception::CannotMakeMetaclassCompatible;
 BEGIN {
   $Moose::Exception::CannotMakeMetaclassCompatible::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotMakeMetaclassCompatible::VERSION = '2.1204';
+$Moose::Exception::CannotMakeMetaclassCompatible::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -2,7 +2,7 @@ package Moose::Exception::CannotOverrideALocalMethod;
 BEGIN {
   $Moose::Exception::CannotOverrideALocalMethod::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotOverrideALocalMethod::VERSION = '2.1204';
+$Moose::Exception::CannotOverrideALocalMethod::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role';
@@ -2,7 +2,7 @@ package Moose::Exception::CannotOverrideBodyOfMetaMethods;
 BEGIN {
   $Moose::Exception::CannotOverrideBodyOfMetaMethods::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotOverrideBodyOfMetaMethods::VERSION = '2.1204';
+$Moose::Exception::CannotOverrideBodyOfMetaMethods::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -2,7 +2,7 @@ package Moose::Exception::CannotOverrideLocalMethodIsPresent;
 BEGIN {
   $Moose::Exception::CannotOverrideLocalMethodIsPresent::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotOverrideLocalMethodIsPresent::VERSION = '2.1204';
+$Moose::Exception::CannotOverrideLocalMethodIsPresent::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class', 'Moose::Exception::Role::Method';
@@ -2,7 +2,7 @@ package Moose::Exception::CannotOverrideNoSuperMethod;
 BEGIN {
   $Moose::Exception::CannotOverrideNoSuperMethod::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotOverrideNoSuperMethod::VERSION = '2.1204';
+$Moose::Exception::CannotOverrideNoSuperMethod::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -2,10 +2,9 @@ package Moose::Exception::CannotRegisterUnnamedTypeConstraint;
 BEGIN {
   $Moose::Exception::CannotRegisterUnnamedTypeConstraint::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotRegisterUnnamedTypeConstraint::VERSION = '2.1204';
+$Moose::Exception::CannotRegisterUnnamedTypeConstraint::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
-with 'Moose::Exception::Role::TypeConstraint';
 
 sub _build_message {
     "can't register an unnamed type constraint";
@@ -2,7 +2,7 @@ package Moose::Exception::CannotUseLazyBuildAndDefaultSimultaneously;
 BEGIN {
   $Moose::Exception::CannotUseLazyBuildAndDefaultSimultaneously::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CannotUseLazyBuildAndDefaultSimultaneously::VERSION = '2.1204';
+$Moose::Exception::CannotUseLazyBuildAndDefaultSimultaneously::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::InvalidAttributeOptions';
@@ -2,7 +2,7 @@ package Moose::Exception::CircularReferenceInAlso;
 BEGIN {
   $Moose::Exception::CircularReferenceInAlso::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CircularReferenceInAlso::VERSION = '2.1204';
+$Moose::Exception::CircularReferenceInAlso::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::ClassDoesNotHaveInitMeta;
 BEGIN {
   $Moose::Exception::ClassDoesNotHaveInitMeta::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::ClassDoesNotHaveInitMeta::VERSION = '2.1204';
+$Moose::Exception::ClassDoesNotHaveInitMeta::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -2,20 +2,22 @@ package Moose::Exception::ClassDoesTheExcludedRole;
 BEGIN {
   $Moose::Exception::ClassDoesTheExcludedRole::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::ClassDoesTheExcludedRole::VERSION = '2.1204';
+$Moose::Exception::ClassDoesTheExcludedRole::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role', 'Moose::Exception::Role::Class';
 
-has 'excluded_role' => (
+has 'excluded_role_name' => (
     is       => 'ro',
-    isa      => 'Moose::Meta::Role',
+    isa      => 'Str',
     required => 1
 );
 
 sub _build_message {
-    my $self = shift;
-    "The class " . $self->class_name . " does the excluded role '".$self->excluded_role->name."'";
+    my $self               = shift;
+    my $excluded_role_name = $self->excluded_role_name;
+    my $class_name         = $self->class_name;
+    return "The class $class_name does the excluded role '$excluded_role_name'";
 }
 
 1;
@@ -2,7 +2,7 @@ package Moose::Exception::ClassNamesDoNotMatch;
 BEGIN {
   $Moose::Exception::ClassNamesDoNotMatch::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::ClassNamesDoNotMatch::VERSION = '2.1204';
+$Moose::Exception::ClassNamesDoNotMatch::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::CloneObjectExpectsAnInstanceOfMetaclass;
 BEGIN {
   $Moose::Exception::CloneObjectExpectsAnInstanceOfMetaclass::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CloneObjectExpectsAnInstanceOfMetaclass::VERSION = '2.1204';
+$Moose::Exception::CloneObjectExpectsAnInstanceOfMetaclass::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -15,7 +15,7 @@ has 'instance' => (
 
 sub _build_message {
     my $self = shift;
-    "You must pass an instance of the metaclass (" .$self->class->name. "), not (".$self->instance.")";
+    "You must pass an instance of the metaclass (" .$self->class_name. "), not (".$self->instance.")";
 }
 
 1;
@@ -2,7 +2,7 @@ package Moose::Exception::CodeBlockMustBeACodeRef;
 BEGIN {
   $Moose::Exception::CodeBlockMustBeACodeRef::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CodeBlockMustBeACodeRef::VERSION = '2.1204';
+$Moose::Exception::CodeBlockMustBeACodeRef::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash', 'Moose::Exception::Role::Instance';
@@ -2,15 +2,10 @@ package Moose::Exception::CoercingWithoutCoercions;
 BEGIN {
   $Moose::Exception::CoercingWithoutCoercions::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CoercingWithoutCoercions::VERSION = '2.1204';
+$Moose::Exception::CoercingWithoutCoercions::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
-
-has 'type' => (
-    is       => 'ro',
-    isa      => "Moose::Meta::TypeConstraint",
-    required => 1,
-);
+with 'Moose::Exception::Role::TypeConstraint';
 
 sub _build_message {
     my $self = shift;
@@ -2,7 +2,7 @@ package Moose::Exception::CoercionAlreadyExists;
 BEGIN {
   $Moose::Exception::CoercionAlreadyExists::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CoercionAlreadyExists::VERSION = '2.1204';
+$Moose::Exception::CoercionAlreadyExists::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Instance';
@@ -2,7 +2,7 @@ package Moose::Exception::CoercionNeedsTypeConstraint;
 BEGIN {
   $Moose::Exception::CoercionNeedsTypeConstraint::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CoercionNeedsTypeConstraint::VERSION = '2.1204';
+$Moose::Exception::CoercionNeedsTypeConstraint::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::InvalidAttributeOptions';
@@ -2,20 +2,22 @@ package Moose::Exception::ConflictDetectedInCheckRoleExclusions;
 BEGIN {
   $Moose::Exception::ConflictDetectedInCheckRoleExclusions::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::ConflictDetectedInCheckRoleExclusions::VERSION = '2.1204';
+$Moose::Exception::ConflictDetectedInCheckRoleExclusions::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role';
 
-has 'excluded_role' => (
+has 'excluded_role_name' => (
     is       => 'ro',
-    isa      => 'Moose::Meta::Role',
+    isa      => 'Str',
     required => 1
 );
 
 sub _build_message {
-    my $self = shift;
-    "Conflict detected: " . $self->role->name . " excludes role '" . $self->excluded_role->name . "'";
+    my $self               = shift;
+    my $role_name          = $self->role_name;
+    my $excluded_role_name = $self->excluded_role_name;
+    return "Conflict detected: $role_name excludes role '$excluded_role_name'";
 }
 
 1;
@@ -2,14 +2,16 @@ package Moose::Exception::ConflictDetectedInCheckRoleExclusionsInToClass;
 BEGIN {
   $Moose::Exception::ConflictDetectedInCheckRoleExclusionsInToClass::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::ConflictDetectedInCheckRoleExclusionsInToClass::VERSION = '2.1204';
+$Moose::Exception::ConflictDetectedInCheckRoleExclusionsInToClass::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class', 'Moose::Exception::Role::Role';
 
 sub _build_message {
-    my $self = shift;
-    "Conflict detected: " . $self->class->name . " excludes role '" . $self->role->name . "'";
+    my $self       = shift;
+    my $class_name = $self->class_name;
+    my $role_name  = $self->role_name;
+    return "Conflict detected: $class_name excludes role '$role_name'";
 }
 
 1;
@@ -2,7 +2,7 @@ package Moose::Exception::ConstructClassInstanceTakesPackageName;
 BEGIN {
   $Moose::Exception::ConstructClassInstanceTakesPackageName::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::ConstructClassInstanceTakesPackageName::VERSION = '2.1204';
+$Moose::Exception::ConstructClassInstanceTakesPackageName::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::CouldNotCreateMethod;
 BEGIN {
   $Moose::Exception::CouldNotCreateMethod::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CouldNotCreateMethod::VERSION = '2.1204';
+$Moose::Exception::CouldNotCreateMethod::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Attribute';
@@ -2,7 +2,7 @@ package Moose::Exception::CouldNotCreateWriter;
 BEGIN {
   $Moose::Exception::CouldNotCreateWriter::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CouldNotCreateWriter::VERSION = '2.1204';
+$Moose::Exception::CouldNotCreateWriter::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::EitherAttributeOrAttributeName', 'Moose::Exception::Role::Instance';
@@ -2,7 +2,7 @@ package Moose::Exception::CouldNotEvalConstructor;
 BEGIN {
   $Moose::Exception::CouldNotEvalConstructor::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CouldNotEvalConstructor::VERSION = '2.1204';
+$Moose::Exception::CouldNotEvalConstructor::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::CouldNotEvalDestructor;
 BEGIN {
   $Moose::Exception::CouldNotEvalDestructor::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CouldNotEvalDestructor::VERSION = '2.1204';
+$Moose::Exception::CouldNotEvalDestructor::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::CouldNotFindTypeConstraintToCoerceFrom;
 BEGIN {
   $Moose::Exception::CouldNotFindTypeConstraintToCoerceFrom::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CouldNotFindTypeConstraintToCoerceFrom::VERSION = '2.1204';
+$Moose::Exception::CouldNotFindTypeConstraintToCoerceFrom::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Instance';
@@ -2,7 +2,7 @@ package Moose::Exception::CouldNotGenerateInlineAttributeMethod;
 BEGIN {
   $Moose::Exception::CouldNotGenerateInlineAttributeMethod::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CouldNotGenerateInlineAttributeMethod::VERSION = '2.1204';
+$Moose::Exception::CouldNotGenerateInlineAttributeMethod::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Instance';
@@ -2,7 +2,7 @@ package Moose::Exception::CouldNotLocateTypeConstraintForUnion;
 BEGIN {
   $Moose::Exception::CouldNotLocateTypeConstraintForUnion::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CouldNotLocateTypeConstraintForUnion::VERSION = '2.1204';
+$Moose::Exception::CouldNotLocateTypeConstraintForUnion::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::TypeConstraint';
@@ -2,7 +2,7 @@ package Moose::Exception::CouldNotParseType;
 BEGIN {
   $Moose::Exception::CouldNotParseType::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CouldNotParseType::VERSION = '2.1204';
+$Moose::Exception::CouldNotParseType::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::CreateMOPClassTakesArrayRefOfAttributes;
 BEGIN {
   $Moose::Exception::CreateMOPClassTakesArrayRefOfAttributes::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CreateMOPClassTakesArrayRefOfAttributes::VERSION = '2.1204';
+$Moose::Exception::CreateMOPClassTakesArrayRefOfAttributes::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::RoleForCreateMOPClass';
@@ -2,7 +2,7 @@ package Moose::Exception::CreateMOPClassTakesArrayRefOfSuperclasses;
 BEGIN {
   $Moose::Exception::CreateMOPClassTakesArrayRefOfSuperclasses::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CreateMOPClassTakesArrayRefOfSuperclasses::VERSION = '2.1204';
+$Moose::Exception::CreateMOPClassTakesArrayRefOfSuperclasses::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::RoleForCreateMOPClass';
@@ -2,7 +2,7 @@ package Moose::Exception::CreateMOPClassTakesHashRefOfMethods;
 BEGIN {
   $Moose::Exception::CreateMOPClassTakesHashRefOfMethods::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CreateMOPClassTakesHashRefOfMethods::VERSION = '2.1204';
+$Moose::Exception::CreateMOPClassTakesHashRefOfMethods::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::RoleForCreateMOPClass';
@@ -2,7 +2,7 @@ package Moose::Exception::CreateTakesArrayRefOfRoles;
 BEGIN {
   $Moose::Exception::CreateTakesArrayRefOfRoles::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CreateTakesArrayRefOfRoles::VERSION = '2.1204';
+$Moose::Exception::CreateTakesArrayRefOfRoles::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::RoleForCreate';
@@ -12,4 +12,3 @@ sub _build_message {
 }
 
 1;
-
@@ -2,7 +2,7 @@ package Moose::Exception::CreateTakesHashRefOfAttributes;
 BEGIN {
   $Moose::Exception::CreateTakesHashRefOfAttributes::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CreateTakesHashRefOfAttributes::VERSION = '2.1204';
+$Moose::Exception::CreateTakesHashRefOfAttributes::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::RoleForCreate';
@@ -2,7 +2,7 @@ package Moose::Exception::CreateTakesHashRefOfMethods;
 BEGIN {
   $Moose::Exception::CreateTakesHashRefOfMethods::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::CreateTakesHashRefOfMethods::VERSION = '2.1204';
+$Moose::Exception::CreateTakesHashRefOfMethods::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::RoleForCreate';
@@ -2,7 +2,7 @@ package Moose::Exception::DefaultToMatchOnTypeMustBeCodeRef;
 BEGIN {
   $Moose::Exception::DefaultToMatchOnTypeMustBeCodeRef::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::DefaultToMatchOnTypeMustBeCodeRef::VERSION = '2.1204';
+$Moose::Exception::DefaultToMatchOnTypeMustBeCodeRef::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::DelegationToAClassWhichIsNotLoaded;
 BEGIN {
   $Moose::Exception::DelegationToAClassWhichIsNotLoaded::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::DelegationToAClassWhichIsNotLoaded::VERSION = '2.1204';
+$Moose::Exception::DelegationToAClassWhichIsNotLoaded::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Attribute';
@@ -2,7 +2,7 @@ package Moose::Exception::DelegationToARoleWhichIsNotLoaded;
 BEGIN {
   $Moose::Exception::DelegationToARoleWhichIsNotLoaded::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::DelegationToARoleWhichIsNotLoaded::VERSION = '2.1204';
+$Moose::Exception::DelegationToARoleWhichIsNotLoaded::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Attribute';
@@ -2,7 +2,7 @@ package Moose::Exception::DelegationToATypeWhichIsNotAClass;
 BEGIN {
   $Moose::Exception::DelegationToATypeWhichIsNotAClass::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::DelegationToATypeWhichIsNotAClass::VERSION = '2.1204';
+$Moose::Exception::DelegationToATypeWhichIsNotAClass::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Attribute';
@@ -2,15 +2,10 @@ package Moose::Exception::DoesRequiresRoleName;
 BEGIN {
   $Moose::Exception::DoesRequiresRoleName::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::DoesRequiresRoleName::VERSION = '2.1204';
+$Moose::Exception::DoesRequiresRoleName::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
-
-has 'class' => (
-    is       => 'ro',
-    isa      => 'Moose::Meta::Class',
-    required => 1,
-);
+with 'Moose::Exception::Role::Class';
 
 sub _build_message {
     "You must supply a role name to does()";
@@ -2,7 +2,7 @@ package Moose::Exception::EnumCalledWithAnArrayRefAndAdditionalArgs;
 BEGIN {
   $Moose::Exception::EnumCalledWithAnArrayRefAndAdditionalArgs::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::EnumCalledWithAnArrayRefAndAdditionalArgs::VERSION = '2.1204';
+$Moose::Exception::EnumCalledWithAnArrayRefAndAdditionalArgs::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::EnumValuesMustBeString;
 BEGIN {
   $Moose::Exception::EnumValuesMustBeString::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::EnumValuesMustBeString::VERSION = '2.1204';
+$Moose::Exception::EnumValuesMustBeString::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -2,7 +2,7 @@ package Moose::Exception::ExtendsMissingArgs;
 BEGIN {
   $Moose::Exception::ExtendsMissingArgs::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::ExtendsMissingArgs::VERSION = '2.1204';
+$Moose::Exception::ExtendsMissingArgs::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -2,7 +2,7 @@ package Moose::Exception::HandlesMustBeAHashRef;
 BEGIN {
   $Moose::Exception::HandlesMustBeAHashRef::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::HandlesMustBeAHashRef::VERSION = '2.1204';
+$Moose::Exception::HandlesMustBeAHashRef::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Instance';
@@ -2,7 +2,7 @@ package Moose::Exception::IllegalInheritedOptions;
 BEGIN {
   $Moose::Exception::IllegalInheritedOptions::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::IllegalInheritedOptions::VERSION = '2.1204';
+$Moose::Exception::IllegalInheritedOptions::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -2,7 +2,7 @@ package Moose::Exception::IllegalMethodTypeToAddMethodModifier;
 BEGIN {
   $Moose::Exception::IllegalMethodTypeToAddMethodModifier::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::IllegalMethodTypeToAddMethodModifier::VERSION = '2.1204';
+$Moose::Exception::IllegalMethodTypeToAddMethodModifier::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,27 +1,26 @@
-
 package Moose::Exception::IncompatibleMetaclassOfSuperclass;
 BEGIN {
   $Moose::Exception::IncompatibleMetaclassOfSuperclass::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::IncompatibleMetaclassOfSuperclass::VERSION = '2.1204';
+$Moose::Exception::IncompatibleMetaclassOfSuperclass::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
 
-has [qw/superclass_name superclass_meta_type/] => (
+has [qw/superclass_name superclass_meta_type class_meta_type/] => (
     is       => 'ro',
     isa      => 'Str',
-    required => 1
+    required => 1,
 );
 
 sub _build_message {
-    my $self = shift;
-    my $class_name = $self->class_name;
-    my $ref_class = ref($self->class);
+    my $self            = shift;
+    my $class_name      = $self->class_name;
+    my $class_meta_type = $self->class_meta_type;
     my $superclass_name = $self->superclass_name;
-    my $supermeta_type = $self->superclass_meta_type;
+    my $supermeta_type  = $self->superclass_meta_type;
 
-    return "The metaclass of $class_name ($ref_class)" .
+    return "The metaclass of $class_name ($class_meta_type)" .
            " is not compatible with the metaclass of its superclass, " .
            "$superclass_name ($supermeta_type)";
 }
@@ -2,7 +2,7 @@ package Moose::Exception::InitMetaRequiresClass;
 BEGIN {
   $Moose::Exception::InitMetaRequiresClass::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::InitMetaRequiresClass::VERSION = '2.1204';
+$Moose::Exception::InitMetaRequiresClass::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -2,7 +2,7 @@ package Moose::Exception::InitializeTakesUnBlessedPackageName;
 BEGIN {
   $Moose::Exception::InitializeTakesUnBlessedPackageName::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::InitializeTakesUnBlessedPackageName::VERSION = '2.1204';
+$Moose::Exception::InitializeTakesUnBlessedPackageName::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,14 +2,14 @@ package Moose::Exception::InstanceBlessedIntoWrongClass;
 BEGIN {
   $Moose::Exception::InstanceBlessedIntoWrongClass::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::InstanceBlessedIntoWrongClass::VERSION = '2.1204';
+$Moose::Exception::InstanceBlessedIntoWrongClass::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash', 'Moose::Exception::Role::Class', 'Moose::Exception::Role::Instance';
 
 sub _build_message {
     my $self = shift;
-    "Objects passed as the __INSTANCE__ parameter must already be blessed into the correct class, but ".$self->instance." is not a " . $self->class->name;
+    "Objects passed as the __INSTANCE__ parameter must already be blessed into the correct class, but ".$self->instance." is not a " . $self->class_name;
 }
 
 1;
@@ -2,7 +2,7 @@ package Moose::Exception::InstanceMustBeABlessedReference;
 BEGIN {
   $Moose::Exception::InstanceMustBeABlessedReference::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::InstanceMustBeABlessedReference::VERSION = '2.1204';
+$Moose::Exception::InstanceMustBeABlessedReference::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash', 'Moose::Exception::Role::Class';
@@ -2,7 +2,7 @@ package Moose::Exception::InvalidArgPassedToMooseUtilMetaRole;
 BEGIN {
   $Moose::Exception::InvalidArgPassedToMooseUtilMetaRole::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::InvalidArgPassedToMooseUtilMetaRole::VERSION = '2.1204';
+$Moose::Exception::InvalidArgPassedToMooseUtilMetaRole::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::InvalidArgumentToMethod;
 BEGIN {
   $Moose::Exception::InvalidArgumentToMethod::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::InvalidArgumentToMethod::VERSION = '2.1204';
+$Moose::Exception::InvalidArgumentToMethod::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::InvalidArgumentsToTraitAliases;
 BEGIN {
   $Moose::Exception::InvalidArgumentsToTraitAliases::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::InvalidArgumentsToTraitAliases::VERSION = '2.1204';
+$Moose::Exception::InvalidArgumentsToTraitAliases::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -2,7 +2,7 @@ package Moose::Exception::InvalidBaseTypeGivenToCreateParameterizedTypeConstrain
 BEGIN {
   $Moose::Exception::InvalidBaseTypeGivenToCreateParameterizedTypeConstraint::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::InvalidBaseTypeGivenToCreateParameterizedTypeConstraint::VERSION = '2.1204';
+$Moose::Exception::InvalidBaseTypeGivenToCreateParameterizedTypeConstraint::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::TypeConstraint';
@@ -2,7 +2,7 @@ package Moose::Exception::InvalidHandleValue;
 BEGIN {
   $Moose::Exception::InvalidHandleValue::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::InvalidHandleValue::VERSION = '2.1204';
+$Moose::Exception::InvalidHandleValue::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Instance';
@@ -2,7 +2,7 @@ package Moose::Exception::InvalidHasProvidedInARole;
 BEGIN {
   $Moose::Exception::InvalidHasProvidedInARole::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::InvalidHasProvidedInARole::VERSION = '2.1204';
+$Moose::Exception::InvalidHasProvidedInARole::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role';
@@ -2,7 +2,7 @@ package Moose::Exception::InvalidNameForType;
 BEGIN {
   $Moose::Exception::InvalidNameForType::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::InvalidNameForType::VERSION = '2.1204';
+$Moose::Exception::InvalidNameForType::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::InvalidRoleApplication;
 BEGIN {
   $Moose::Exception::InvalidRoleApplication::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::InvalidRoleApplication::VERSION = '2.1204';
+$Moose::Exception::InvalidRoleApplication::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -2,7 +2,7 @@ package Moose::Exception::InvalidTypeConstraint;
 BEGIN {
   $Moose::Exception::InvalidTypeConstraint::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::InvalidTypeConstraint::VERSION = '2.1204';
+$Moose::Exception::InvalidTypeConstraint::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::InvalidTypeGivenToCreateParameterizedTypeConstraint;
 BEGIN {
   $Moose::Exception::InvalidTypeGivenToCreateParameterizedTypeConstraint::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::InvalidTypeGivenToCreateParameterizedTypeConstraint::VERSION = '2.1204';
+$Moose::Exception::InvalidTypeGivenToCreateParameterizedTypeConstraint::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::TypeConstraint';
@@ -2,7 +2,7 @@ package Moose::Exception::InvalidValueForIs;
 BEGIN {
   $Moose::Exception::InvalidValueForIs::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::InvalidValueForIs::VERSION = '2.1204';
+$Moose::Exception::InvalidValueForIs::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::InvalidAttributeOptions';
@@ -2,7 +2,7 @@ package Moose::Exception::IsaDoesNotDoTheRole;
 BEGIN {
   $Moose::Exception::IsaDoesNotDoTheRole::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::IsaDoesNotDoTheRole::VERSION = '2.1204';
+$Moose::Exception::IsaDoesNotDoTheRole::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::InvalidAttributeOptions';
@@ -2,7 +2,7 @@ package Moose::Exception::IsaLacksDoesMethod;
 BEGIN {
   $Moose::Exception::IsaLacksDoesMethod::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::IsaLacksDoesMethod::VERSION = '2.1204';
+$Moose::Exception::IsaLacksDoesMethod::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::InvalidAttributeOptions';
@@ -2,7 +2,7 @@ package Moose::Exception::LazyAttributeNeedsADefault;
 BEGIN {
   $Moose::Exception::LazyAttributeNeedsADefault::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::LazyAttributeNeedsADefault::VERSION = '2.1204';
+$Moose::Exception::LazyAttributeNeedsADefault::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::EitherAttributeOrAttributeName';
@@ -2,7 +2,7 @@ package Moose::Exception::Legacy;
 BEGIN {
   $Moose::Exception::Legacy::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::Legacy::VERSION = '2.1204';
+$Moose::Exception::Legacy::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::MOPAttributeNewNeedsAttributeName;
 BEGIN {
   $Moose::Exception::MOPAttributeNewNeedsAttributeName::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MOPAttributeNewNeedsAttributeName::VERSION = '2.1204';
+$Moose::Exception::MOPAttributeNewNeedsAttributeName::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -2,14 +2,15 @@ package Moose::Exception::MatchActionMustBeACodeRef;
 BEGIN {
   $Moose::Exception::MatchActionMustBeACodeRef::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MatchActionMustBeACodeRef::VERSION = '2.1204';
+$Moose::Exception::MatchActionMustBeACodeRef::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
+with 'Moose::Exception::Role::TypeConstraint';
 
 has 'to_match' => (
     is       => 'ro',
     isa      => 'Any',
-    required => 1
+    required => 1,
 );
 
 has 'action' => (
@@ -18,12 +19,6 @@ has 'action' => (
     required => 1
 );
 
-has 'type' => (
-    is       => 'ro',
-    isa      => 'Moose::Meta::TypeConstraint',
-    required => 1
-);
-
 sub _build_message {
     my $self = shift;
     my $action = $self->action;
@@ -2,7 +2,7 @@ package Moose::Exception::MessageParameterMustBeCodeRef;
 BEGIN {
   $Moose::Exception::MessageParameterMustBeCodeRef::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MessageParameterMustBeCodeRef::VERSION = '2.1204';
+$Moose::Exception::MessageParameterMustBeCodeRef::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -2,11 +2,13 @@ package Moose::Exception::MetaclassIsAClassNotASubclassOfGivenMetaclass;
 BEGIN {
   $Moose::Exception::MetaclassIsAClassNotASubclassOfGivenMetaclass::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MetaclassIsAClassNotASubclassOfGivenMetaclass::VERSION = '2.1204';
+$Moose::Exception::MetaclassIsAClassNotASubclassOfGivenMetaclass::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
 
+use Moose::Util 'find_meta';
+
 has 'metaclass' => (
     is       => 'ro',
     isa      => 'Str',
@@ -15,8 +17,9 @@ has 'metaclass' => (
 
 sub _build_message {
     my $self = shift;
-    $self->class_name." already has a metaclass, but it does not inherit ".$self->metaclass.' ('.$self->class.
-        '). You cannot make the same thing a role and a class. Remove either Moose or Moose::Role.';
+    my $class = find_meta( $self->class_name );
+    $self->class_name." already has a metaclass, but it does not inherit ".$self->metaclass.
+        " ($class). You cannot make the same thing a role and a class. Remove either Moose or Moose::Role.";
 }
 
 1;
@@ -2,11 +2,13 @@ package Moose::Exception::MetaclassIsARoleNotASubclassOfGivenMetaclass;
 BEGIN {
   $Moose::Exception::MetaclassIsARoleNotASubclassOfGivenMetaclass::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MetaclassIsARoleNotASubclassOfGivenMetaclass::VERSION = '2.1204';
+$Moose::Exception::MetaclassIsARoleNotASubclassOfGivenMetaclass::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role';
 
+use Moose::Util 'find_meta';
+
 has 'metaclass' => (
     is       => 'ro',
     isa      => 'Str',
@@ -15,8 +17,11 @@ has 'metaclass' => (
 
 sub _build_message {
     my $self = shift;
-    $self->role_name." already has a metaclass, but it does not inherit ".$self->metaclass.' ('.$self->role.
-        '). You cannot make the same thing a role and a class. Remove either Moose or Moose::Role.';
+    my $role_name = $self->role_name;
+    my $role      = find_meta( $role_name );
+    my $metaclass = $self->metaclass;
+    return "$role_name already has a metaclass, but it does not inherit $metaclass ($role). "
+        ."You cannot make the same thing a role and a class. Remove either Moose or Moose::Role.";
 }
 
 1;
@@ -2,11 +2,13 @@ package Moose::Exception::MetaclassIsNotASubclassOfGivenMetaclass;
 BEGIN {
   $Moose::Exception::MetaclassIsNotASubclassOfGivenMetaclass::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MetaclassIsNotASubclassOfGivenMetaclass::VERSION = '2.1204';
+$Moose::Exception::MetaclassIsNotASubclassOfGivenMetaclass::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
 
+use Moose::Util 'find_meta';
+
 has 'metaclass' => (
     is       => 'ro',
     isa      => 'Str',
@@ -15,7 +17,8 @@ has 'metaclass' => (
 
 sub _build_message {
     my $self = shift;
-    $self->class_name." already has a metaclass, but it does not inherit ".$self->metaclass.' ('.$self->class.').';
+    my $class = find_meta( $self->class_name );
+    $self->class_name." already has a metaclass, but it does not inherit ".$self->metaclass." ($class).";
 }
 
 1;
@@ -2,7 +2,7 @@ package Moose::Exception::MetaclassMustBeASubclassOfMooseMetaClass;
 BEGIN {
   $Moose::Exception::MetaclassMustBeASubclassOfMooseMetaClass::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MetaclassMustBeASubclassOfMooseMetaClass::VERSION = '2.1204';
+$Moose::Exception::MetaclassMustBeASubclassOfMooseMetaClass::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -2,7 +2,7 @@ package Moose::Exception::MetaclassMustBeASubclassOfMooseMetaRole;
 BEGIN {
   $Moose::Exception::MetaclassMustBeASubclassOfMooseMetaRole::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MetaclassMustBeASubclassOfMooseMetaRole::VERSION = '2.1204';
+$Moose::Exception::MetaclassMustBeASubclassOfMooseMetaRole::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role';
@@ -2,7 +2,7 @@ package Moose::Exception::MetaclassMustBeDerivedFromClassMOPClass;
 BEGIN {
   $Moose::Exception::MetaclassMustBeDerivedFromClassMOPClass::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MetaclassMustBeDerivedFromClassMOPClass::VERSION = '2.1204';
+$Moose::Exception::MetaclassMustBeDerivedFromClassMOPClass::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::MetaclassNotLoaded;
 BEGIN {
   $Moose::Exception::MetaclassNotLoaded::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MetaclassNotLoaded::VERSION = '2.1204';
+$Moose::Exception::MetaclassNotLoaded::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -2,11 +2,13 @@ package Moose::Exception::MetaclassTypeIncompatible;
 BEGIN {
   $Moose::Exception::MetaclassTypeIncompatible::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MetaclassTypeIncompatible::VERSION = '2.1204';
+$Moose::Exception::MetaclassTypeIncompatible::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
 
+use Moose::Util 'find_meta';
+
 has [qw(superclass_name metaclass_type)] => (
     is       => 'ro',
     isa      => 'Str',
@@ -23,7 +25,9 @@ sub _build_message {
     $metaclass_type_name =~ s/_(?:meta)?class$//;
     $metaclass_type_name =~ s/_/ /g;
 
-    my $self_metaclass_type = $self->class->$metaclass_type;
+    my $class = find_meta( $class_name );
+
+    my $self_metaclass_type = $class->$metaclass_type;
 
     my $super_meta = Class::MOP::get_metaclass_by_name($superclass_name);
     my $super_metatype = $super_meta->$metaclass_type;
@@ -2,7 +2,7 @@ package Moose::Exception::MethodExpectedAMetaclassObject;
 BEGIN {
   $Moose::Exception::MethodExpectedAMetaclassObject::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MethodExpectedAMetaclassObject::VERSION = '2.1204';
+$Moose::Exception::MethodExpectedAMetaclassObject::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::MethodExpectsFewerArgs;
 BEGIN {
   $Moose::Exception::MethodExpectsFewerArgs::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MethodExpectsFewerArgs::VERSION = '2.1204';
+$Moose::Exception::MethodExpectsFewerArgs::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::MethodExpectsMoreArgs;
 BEGIN {
   $Moose::Exception::MethodExpectsMoreArgs::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MethodExpectsMoreArgs::VERSION = '2.1204';
+$Moose::Exception::MethodExpectsMoreArgs::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::MethodModifierNeedsMethodName;
 BEGIN {
   $Moose::Exception::MethodModifierNeedsMethodName::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MethodModifierNeedsMethodName::VERSION = '2.1204';
+$Moose::Exception::MethodModifierNeedsMethodName::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -2,7 +2,7 @@ package Moose::Exception::MethodNameConflictInRoles;
 BEGIN {
   $Moose::Exception::MethodNameConflictInRoles::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MethodNameConflictInRoles::VERSION = '2.1204';
+$Moose::Exception::MethodNameConflictInRoles::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -2,7 +2,7 @@ package Moose::Exception::MethodNameNotFoundInInheritanceHierarchy;
 BEGIN {
   $Moose::Exception::MethodNameNotFoundInInheritanceHierarchy::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MethodNameNotFoundInInheritanceHierarchy::VERSION = '2.1204';
+$Moose::Exception::MethodNameNotFoundInInheritanceHierarchy::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -15,7 +15,7 @@ has 'method_name' => (
 
 sub _build_message {
     my $self = shift;
-    "The method '".$self->method_name."' was not found in the inheritance hierarchy for ".$self->class->name;
+    "The method '".$self->method_name."' was not found in the inheritance hierarchy for ".$self->class_name;
 }
 
 1;
@@ -2,7 +2,7 @@ package Moose::Exception::MethodNameNotGiven;
 BEGIN {
   $Moose::Exception::MethodNameNotGiven::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MethodNameNotGiven::VERSION = '2.1204';
+$Moose::Exception::MethodNameNotGiven::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -2,7 +2,7 @@ package Moose::Exception::MustDefineAMethodName;
 BEGIN {
   $Moose::Exception::MustDefineAMethodName::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MustDefineAMethodName::VERSION = '2.1204';
+$Moose::Exception::MustDefineAMethodName::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Instance';
@@ -2,7 +2,7 @@ package Moose::Exception::MustDefineAnAttributeName;
 BEGIN {
   $Moose::Exception::MustDefineAnAttributeName::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MustDefineAnAttributeName::VERSION = '2.1204';
+$Moose::Exception::MustDefineAnAttributeName::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -2,7 +2,7 @@ package Moose::Exception::MustHaveAtLeastOneValueToEnumerate;
 BEGIN {
   $Moose::Exception::MustHaveAtLeastOneValueToEnumerate::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MustHaveAtLeastOneValueToEnumerate::VERSION = '2.1204';
+$Moose::Exception::MustHaveAtLeastOneValueToEnumerate::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -2,7 +2,7 @@ package Moose::Exception::MustPassAHashOfOptions;
 BEGIN {
   $Moose::Exception::MustPassAHashOfOptions::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MustPassAHashOfOptions::VERSION = '2.1204';
+$Moose::Exception::MustPassAHashOfOptions::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -2,7 +2,7 @@ package Moose::Exception::MustPassAMooseMetaRoleInstanceOrSubclass;
 BEGIN {
   $Moose::Exception::MustPassAMooseMetaRoleInstanceOrSubclass::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MustPassAMooseMetaRoleInstanceOrSubclass::VERSION = '2.1204';
+$Moose::Exception::MustPassAMooseMetaRoleInstanceOrSubclass::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::MustPassAPackageNameOrAnExistingClassMOPPackageInstanc
 BEGIN {
   $Moose::Exception::MustPassAPackageNameOrAnExistingClassMOPPackageInstance::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MustPassAPackageNameOrAnExistingClassMOPPackageInstance::VERSION = '2.1204';
+$Moose::Exception::MustPassAPackageNameOrAnExistingClassMOPPackageInstance::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -2,7 +2,7 @@ package Moose::Exception::MustPassEvenNumberOfArguments;
 BEGIN {
   $Moose::Exception::MustPassEvenNumberOfArguments::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MustPassEvenNumberOfArguments::VERSION = '2.1204';
+$Moose::Exception::MustPassEvenNumberOfArguments::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::MustPassEvenNumberOfAttributeOptions;
 BEGIN {
   $Moose::Exception::MustPassEvenNumberOfAttributeOptions::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MustPassEvenNumberOfAttributeOptions::VERSION = '2.1204';
+$Moose::Exception::MustPassEvenNumberOfAttributeOptions::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::MustProvideANameForTheAttribute;
 BEGIN {
   $Moose::Exception::MustProvideANameForTheAttribute::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MustProvideANameForTheAttribute::VERSION = '2.1204';
+$Moose::Exception::MustProvideANameForTheAttribute::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -2,7 +2,7 @@ package Moose::Exception::MustSpecifyAtleastOneMethod;
 BEGIN {
   $Moose::Exception::MustSpecifyAtleastOneMethod::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MustSpecifyAtleastOneMethod::VERSION = '2.1204';
+$Moose::Exception::MustSpecifyAtleastOneMethod::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role';
@@ -2,7 +2,7 @@ package Moose::Exception::MustSpecifyAtleastOneRole;
 BEGIN {
   $Moose::Exception::MustSpecifyAtleastOneRole::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MustSpecifyAtleastOneRole::VERSION = '2.1204';
+$Moose::Exception::MustSpecifyAtleastOneRole::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role';
@@ -2,7 +2,7 @@ package Moose::Exception::MustSpecifyAtleastOneRoleToApplicant;
 BEGIN {
   $Moose::Exception::MustSpecifyAtleastOneRoleToApplicant::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MustSpecifyAtleastOneRoleToApplicant::VERSION = '2.1204';
+$Moose::Exception::MustSpecifyAtleastOneRoleToApplicant::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::MustSupplyAClassMOPAttributeInstance;
 BEGIN {
   $Moose::Exception::MustSupplyAClassMOPAttributeInstance::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MustSupplyAClassMOPAttributeInstance::VERSION = '2.1204';
+$Moose::Exception::MustSupplyAClassMOPAttributeInstance::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -2,7 +2,7 @@ package Moose::Exception::MustSupplyADelegateToMethod;
 BEGIN {
   $Moose::Exception::MustSupplyADelegateToMethod::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MustSupplyADelegateToMethod::VERSION = '2.1204';
+$Moose::Exception::MustSupplyADelegateToMethod::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -2,7 +2,7 @@ package Moose::Exception::MustSupplyAMetaclass;
 BEGIN {
   $Moose::Exception::MustSupplyAMetaclass::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MustSupplyAMetaclass::VERSION = '2.1204';
+$Moose::Exception::MustSupplyAMetaclass::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -2,7 +2,7 @@ package Moose::Exception::MustSupplyAMooseMetaAttributeInstance;
 BEGIN {
   $Moose::Exception::MustSupplyAMooseMetaAttributeInstance::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MustSupplyAMooseMetaAttributeInstance::VERSION = '2.1204';
+$Moose::Exception::MustSupplyAMooseMetaAttributeInstance::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -2,7 +2,7 @@ package Moose::Exception::MustSupplyAnAccessorTypeToConstructWith;
 BEGIN {
   $Moose::Exception::MustSupplyAnAccessorTypeToConstructWith::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MustSupplyAnAccessorTypeToConstructWith::VERSION = '2.1204';
+$Moose::Exception::MustSupplyAnAccessorTypeToConstructWith::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -2,7 +2,7 @@ package Moose::Exception::MustSupplyAnAttributeToConstructWith;
 BEGIN {
   $Moose::Exception::MustSupplyAnAttributeToConstructWith::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MustSupplyAnAttributeToConstructWith::VERSION = '2.1204';
+$Moose::Exception::MustSupplyAnAttributeToConstructWith::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -2,7 +2,7 @@ package Moose::Exception::MustSupplyArrayRefAsCurriedArguments;
 BEGIN {
   $Moose::Exception::MustSupplyArrayRefAsCurriedArguments::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MustSupplyArrayRefAsCurriedArguments::VERSION = '2.1204';
+$Moose::Exception::MustSupplyArrayRefAsCurriedArguments::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash', 'Moose::Exception::Role::Class';
@@ -2,7 +2,7 @@ package Moose::Exception::MustSupplyPackageNameAndName;
 BEGIN {
   $Moose::Exception::MustSupplyPackageNameAndName::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::MustSupplyPackageNameAndName::VERSION = '2.1204';
+$Moose::Exception::MustSupplyPackageNameAndName::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -2,11 +2,13 @@ package Moose::Exception::NeedsTypeConstraintUnionForTypeCoercionUnion;
 BEGIN {
   $Moose::Exception::NeedsTypeConstraintUnionForTypeCoercionUnion::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::NeedsTypeConstraintUnionForTypeCoercionUnion::VERSION = '2.1204';
+$Moose::Exception::NeedsTypeConstraintUnionForTypeCoercionUnion::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::TypeConstraint';
 
+# use Moose::Util::TypeConstraints 'find_type_constraint';
+
 has 'type_coercion_union_object' => (
     is       => 'ro',
     isa      => 'Moose::Meta::TypeCoercion::Union',
@@ -15,7 +17,7 @@ has 'type_coercion_union_object' => (
 
 sub _build_message {
     my $self = shift;
-    my $type_constraint = $self->type;
+    my $type_constraint = $self->type_name;
 
     return "You can only create a Moose::Meta::TypeCoercion::Union for a " .
            "Moose::Meta::TypeConstraint::Union, not a $type_constraint"
@@ -2,7 +2,7 @@ package Moose::Exception::NeitherAttributeNorAttributeNameIsGiven;
 BEGIN {
   $Moose::Exception::NeitherAttributeNorAttributeNameIsGiven::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::NeitherAttributeNorAttributeNameIsGiven::VERSION = '2.1204';
+$Moose::Exception::NeitherAttributeNorAttributeNameIsGiven::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::NeitherClassNorClassNameIsGiven;
 BEGIN {
   $Moose::Exception::NeitherClassNorClassNameIsGiven::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::NeitherClassNorClassNameIsGiven::VERSION = '2.1204';
+$Moose::Exception::NeitherClassNorClassNameIsGiven::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::NeitherRoleNorRoleNameIsGiven;
 BEGIN {
   $Moose::Exception::NeitherRoleNorRoleNameIsGiven::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::NeitherRoleNorRoleNameIsGiven::VERSION = '2.1204';
+$Moose::Exception::NeitherRoleNorRoleNameIsGiven::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::NeitherTypeNorTypeNameIsGiven;
 BEGIN {
   $Moose::Exception::NeitherTypeNorTypeNameIsGiven::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::NeitherTypeNorTypeNameIsGiven::VERSION = '2.1204';
+$Moose::Exception::NeitherTypeNorTypeNameIsGiven::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,14 +2,14 @@ package Moose::Exception::NoAttributeFoundInSuperClass;
 BEGIN {
   $Moose::Exception::NoAttributeFoundInSuperClass::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::NoAttributeFoundInSuperClass::VERSION = '2.1204';
+$Moose::Exception::NoAttributeFoundInSuperClass::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class', 'Moose::Exception::Role::InvalidAttributeOptions';
 
 sub _build_message {
     my $self = shift;
-    "Could not find an attribute by the name of '".$self->attribute_name."' to inherit from in ".$self->class->name;
+    "Could not find an attribute by the name of '".$self->attribute_name."' to inherit from in ".$self->class_name;
 }
 
 1;
@@ -2,7 +2,7 @@ package Moose::Exception::NoBodyToInitializeInAnAbstractBaseClass;
 BEGIN {
   $Moose::Exception::NoBodyToInitializeInAnAbstractBaseClass::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::NoBodyToInitializeInAnAbstractBaseClass::VERSION = '2.1204';
+$Moose::Exception::NoBodyToInitializeInAnAbstractBaseClass::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::NoCasesMatched;
 BEGIN {
   $Moose::Exception::NoCasesMatched::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::NoCasesMatched::VERSION = '2.1204';
+$Moose::Exception::NoCasesMatched::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::NoConstraintCheckForTypeConstraint;
 BEGIN {
   $Moose::Exception::NoConstraintCheckForTypeConstraint::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::NoConstraintCheckForTypeConstraint::VERSION = '2.1204';
+$Moose::Exception::NoConstraintCheckForTypeConstraint::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::TypeConstraint';
@@ -2,7 +2,7 @@ package Moose::Exception::NoDestructorClassSpecified;
 BEGIN {
   $Moose::Exception::NoDestructorClassSpecified::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::NoDestructorClassSpecified::VERSION = '2.1204';
+$Moose::Exception::NoDestructorClassSpecified::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class', 'Moose::Exception::Role::ParamsHash';
@@ -2,14 +2,17 @@ package Moose::Exception::NoImmutableTraitSpecifiedForClass;
 BEGIN {
   $Moose::Exception::NoImmutableTraitSpecifiedForClass::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::NoImmutableTraitSpecifiedForClass::VERSION = '2.1204';
+$Moose::Exception::NoImmutableTraitSpecifiedForClass::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class', 'Moose::Exception::Role::ParamsHash';
 
+use Moose::Util 'find_meta';
+
 sub _build_message {
-    my $self = shift;
-    "no immutable trait specified for ".$self->class;
+    my $self  = shift;
+    my $class = find_meta( $self->class_name );
+    "no immutable trait specified for $class";
 }
 
 1;
@@ -2,7 +2,7 @@ package Moose::Exception::NoParentGivenToSubtype;
 BEGIN {
   $Moose::Exception::NoParentGivenToSubtype::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::NoParentGivenToSubtype::VERSION = '2.1204';
+$Moose::Exception::NoParentGivenToSubtype::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::OnlyInstancesCanBeCloned;
 BEGIN {
   $Moose::Exception::OnlyInstancesCanBeCloned::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::OnlyInstancesCanBeCloned::VERSION = '2.1204';
+$Moose::Exception::OnlyInstancesCanBeCloned::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class', 'Moose::Exception::Role::ParamsHash';
@@ -2,7 +2,7 @@ package Moose::Exception::OperatorIsRequired;
 BEGIN {
   $Moose::Exception::OperatorIsRequired::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::OperatorIsRequired::VERSION = '2.1204';
+$Moose::Exception::OperatorIsRequired::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -2,14 +2,14 @@ package Moose::Exception::OverrideConflictInComposition;
 BEGIN {
   $Moose::Exception::OverrideConflictInComposition::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::OverrideConflictInComposition::VERSION = '2.1204';
+$Moose::Exception::OverrideConflictInComposition::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role';
 
-has 'role_being_applied' => (
+has 'role_being_applied_name' => (
     is       => 'ro',
-    isa      => 'Moose::Meta::Role',
+    isa      => 'Str',
     required => 1
 );
 
@@ -30,12 +30,12 @@ sub _build_message {
     my $self = shift;
 
     if( $self->two_overrides_found ) {
-        return "Role '" . $self->role_being_applied->name . "' has encountered an 'override' method conflict " .
+        return "Role '" . $self->role_being_applied_name . "' has encountered an 'override' method conflict " .
                "during composition (Two 'override' methods of the same name encountered). " .
                "This is fatal error.";
     }
     else {
-        return "Role '".$self->role_being_applied->name."' has encountered an 'override' method conflict ".
+        return "Role '".$self->role_being_applied_name."' has encountered an 'override' method conflict ".
                "during composition (A local method of the same name as been found). ".
                "This is a fatal error.";
     }
@@ -2,24 +2,28 @@ package Moose::Exception::OverrideConflictInSummation;
 BEGIN {
   $Moose::Exception::OverrideConflictInSummation::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::OverrideConflictInSummation::VERSION = '2.1204';
+$Moose::Exception::OverrideConflictInSummation::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
+use Moose::Util 'find_meta';
+
 has 'role_application' => (
     is       => 'ro',
     isa      => 'Moose::Meta::Role::Application::RoleSummation',
     required => 1
 );
 
-has 'roles' => (
+has 'role_names' => (
     traits   => ['Array'],
     is       => 'bare',
-    isa      => 'ArrayRef[Moose::Meta::Role]',
+    isa      => 'ArrayRef[Str]',
     handles  => {
-        roles      => 'elements',
+        role_names      => 'elements',
     },
-    required => 1
+    required => 1,
+    documentation => "This attribute is an ArrayRef containing role names, if you want metaobjects\n".
+                     "associated with these role names, then call method roles on the exception object.\n",
 );
 
 has 'method_name' => (
@@ -35,11 +39,11 @@ has 'two_overrides_found' => (
     default  => 0
 );
 
-sub role_names {
+sub roles {
     my $self = shift;
-    my @roles = $self->roles;
-    my @role_names = map { $_->name } @roles;
-    return @role_names;
+    my @role_names = $self->role_names;
+    my @roles = map { find_meta($_) } @role_names;
+    return @roles;
 }
 
 sub _build_message {
@@ -2,7 +2,7 @@ package Moose::Exception::PackageDoesNotUseMooseExporter;
 BEGIN {
   $Moose::Exception::PackageDoesNotUseMooseExporter::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::PackageDoesNotUseMooseExporter::VERSION = '2.1204';
+$Moose::Exception::PackageDoesNotUseMooseExporter::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::PackageNameAndNameParamsNotGivenToWrap;
 BEGIN {
   $Moose::Exception::PackageNameAndNameParamsNotGivenToWrap::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::PackageNameAndNameParamsNotGivenToWrap::VERSION = '2.1204';
+$Moose::Exception::PackageNameAndNameParamsNotGivenToWrap::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -2,7 +2,7 @@ package Moose::Exception::PackagesAndModulesAreNotCachable;
 BEGIN {
   $Moose::Exception::PackagesAndModulesAreNotCachable::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::PackagesAndModulesAreNotCachable::VERSION = '2.1204';
+$Moose::Exception::PackagesAndModulesAreNotCachable::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class', 'Moose::Exception::Role::ParamsHash';
@@ -2,11 +2,13 @@ package Moose::Exception::ParameterIsNotSubtypeOfParent;
 BEGIN {
   $Moose::Exception::ParameterIsNotSubtypeOfParent::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::ParameterIsNotSubtypeOfParent::VERSION = '2.1204';
+$Moose::Exception::ParameterIsNotSubtypeOfParent::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::TypeConstraint';
 
+use Moose::Util::TypeConstraints qw/find_type_constraint/;
+
 has 'type_parameter' => (
     is => 'ro',
     isa => 'Str',
@@ -16,7 +18,8 @@ has 'type_parameter' => (
 sub _build_message {
     my $self = shift;
     my $type_parameter = $self->type_parameter;
-    my $parent = $self->type->parent->type_parameter;
+    my $type           = find_type_constraint( $self->type_name );
+    my $parent         = $type->parent->type_parameter;
 
     return "$type_parameter is not a subtype of $parent";
 }
@@ -2,7 +2,7 @@ package Moose::Exception::ReferencesAreNotAllowedAsDefault;
 BEGIN {
   $Moose::Exception::ReferencesAreNotAllowedAsDefault::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::ReferencesAreNotAllowedAsDefault::VERSION = '2.1204';
+$Moose::Exception::ReferencesAreNotAllowedAsDefault::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -2,7 +2,7 @@ package Moose::Exception::RequiredAttributeLacksInitialization;
 BEGIN {
   $Moose::Exception::RequiredAttributeLacksInitialization::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::RequiredAttributeLacksInitialization::VERSION = '2.1204';
+$Moose::Exception::RequiredAttributeLacksInitialization::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -2,7 +2,7 @@ package Moose::Exception::RequiredAttributeNeedsADefault;
 BEGIN {
   $Moose::Exception::RequiredAttributeNeedsADefault::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::RequiredAttributeNeedsADefault::VERSION = '2.1204';
+$Moose::Exception::RequiredAttributeNeedsADefault::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::InvalidAttributeOptions';
@@ -2,7 +2,7 @@ package Moose::Exception::RequiredMethodsImportedByClass;
 BEGIN {
   $Moose::Exception::RequiredMethodsImportedByClass::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::RequiredMethodsImportedByClass::VERSION = '2.1204';
+$Moose::Exception::RequiredMethodsImportedByClass::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class', 'Moose::Exception::Role::Role';
@@ -31,7 +31,7 @@ sub _build_message {
     my $list = Moose::Util::english_list( map { q{'} . $_ . q{'} } $self->get_all_methods );
 
     my ($class, $role, $method) = ($self->class_name,
-                                   $self->role->name,
+                                   $self->role_name,
                                    $self->imported_method);
 
     my ($class_quoted, $role_quoted) = ("'".$class."'","'".$role."'");
@@ -2,7 +2,7 @@ package Moose::Exception::RequiredMethodsNotImplementedByClass;
 BEGIN {
   $Moose::Exception::RequiredMethodsNotImplementedByClass::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::RequiredMethodsNotImplementedByClass::VERSION = '2.1204';
+$Moose::Exception::RequiredMethodsNotImplementedByClass::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class', 'Moose::Exception::Role::Role';
@@ -2,7 +2,7 @@ package Moose::Exception::Role::Attribute;
 BEGIN {
   $Moose::Exception::Role::Attribute::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::Role::Attribute::VERSION = '2.1204';
+$Moose::Exception::Role::Attribute::VERSION = '2.1210';
 use Moose::Role;
 
 has 'attribute' => (
@@ -2,7 +2,7 @@ package Moose::Exception::Role::AttributeName;
 BEGIN {
   $Moose::Exception::Role::AttributeName::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::Role::AttributeName::VERSION = '2.1204';
+$Moose::Exception::Role::AttributeName::VERSION = '2.1210';
 use Moose::Role;
 
 has 'attribute_name' => (
@@ -2,56 +2,15 @@ package Moose::Exception::Role::Class;
 BEGIN {
   $Moose::Exception::Role::Class::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::Role::Class::VERSION = '2.1204';
-use Moose::Util 'throw_exception';
+$Moose::Exception::Role::Class::VERSION = '2.1210';
 use Moose::Role;
 
-has 'class' => (
-    is        => 'rw',
-    isa       => 'Class::MOP::Class',
-    lazy      => 1,
-    builder   => '_build_class',
-    predicate => 'is_class_set',
-);
-
 has 'class_name' => (
-    is        => 'ro',
-    isa       => 'Str',
-    lazy      => 1,
-    builder   => '_build_class_name',
-    predicate => 'is_class_name_set',
+    is            => 'ro',
+    isa           => 'Str',
+    required      => 1,
+    documentation => "This attribute can be used for fetching metaclass instance:\n".
+                     "    my \$metaclass_instance = Moose::Util::find_meta( \$exception->class_name );\n",
 );
 
-sub _build_class {
-    my $self = $_[0];
-    Class::MOP::class_of( $self->class_name );
-}
-
-sub _build_class_name {
-    my $self = $_[0];
-    $self->class->name;
-}
-
-sub _has_class_or_class_name {
-    my $self = shift;
-
-    return ( $self->is_class_name_set || $self->is_class_set );
-}
-
-after "BUILD" => sub {
-    my $self = $_[0];
-
-    if( !$self->_has_class_or_class_name() )
-    {
-        throw_exception("NeitherClassNorClassNameIsGiven");
-    }
-    elsif( $self->is_class_set && $self->is_class_name_set &&
-           ( $self->class->name ne $self->class_name ) )
-    {
-        throw_exception( ClassNamesDoNotMatch => class_name => $self->class_name,
-                                                 class      => $self->class,
-                       );
-    }
-};
-
 1;
@@ -2,7 +2,7 @@ package Moose::Exception::Role::EitherAttributeOrAttributeName;
 BEGIN {
   $Moose::Exception::Role::EitherAttributeOrAttributeName::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::Role::EitherAttributeOrAttributeName::VERSION = '2.1204';
+$Moose::Exception::Role::EitherAttributeOrAttributeName::VERSION = '2.1210';
 use Moose::Util 'throw_exception';
 use Moose::Role;
 
@@ -2,7 +2,7 @@ package Moose::Exception::Role::Instance;
 BEGIN {
   $Moose::Exception::Role::Instance::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::Role::Instance::VERSION = '2.1204';
+$Moose::Exception::Role::Instance::VERSION = '2.1210';
 use Moose::Role;
 
 has 'instance' => (
@@ -0,0 +1,14 @@
+package Moose::Exception::Role::InstanceClass;
+BEGIN {
+  $Moose::Exception::Role::InstanceClass::AUTHORITY = 'cpan:STEVAN';
+}
+$Moose::Exception::Role::InstanceClass::VERSION = '2.1210';
+use Moose::Role;
+
+has 'instance_class' => (
+    is       => 'ro',
+    isa      => 'Str',
+    required => 1,
+);
+
+1;
@@ -2,7 +2,7 @@ package Moose::Exception::Role::InvalidAttributeOptions;
 BEGIN {
   $Moose::Exception::Role::InvalidAttributeOptions::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::Role::InvalidAttributeOptions::VERSION = '2.1204';
+$Moose::Exception::Role::InvalidAttributeOptions::VERSION = '2.1210';
 use Moose::Role;
 with 'Moose::Exception::Role::ParamsHash';
 
@@ -2,7 +2,7 @@ package Moose::Exception::Role::Method;
 BEGIN {
   $Moose::Exception::Role::Method::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::Role::Method::VERSION = '2.1204';
+$Moose::Exception::Role::Method::VERSION = '2.1210';
 use Moose::Role;
 
 has 'method' => (
@@ -2,7 +2,7 @@ package Moose::Exception::Role::ParamsHash;
 BEGIN {
   $Moose::Exception::Role::ParamsHash::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::Role::ParamsHash::VERSION = '2.1204';
+$Moose::Exception::Role::ParamsHash::VERSION = '2.1210';
 use Moose::Role;
 
 has 'params' => (
@@ -2,51 +2,17 @@ package Moose::Exception::Role::Role;
 BEGIN {
   $Moose::Exception::Role::Role::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::Role::Role::VERSION = '2.1204';
-use Moose::Util 'throw_exception';
+$Moose::Exception::Role::Role::VERSION = '2.1210';
+# use Moose::Util 'throw_exception';
 use Moose::Role;
 
-has 'role' => (
-    is        => 'rw',
-    isa       => 'Moose::Meta::Role',
-    lazy      => 1,
-    builder   => '_build_role',
-    predicate => 'is_role_set',
-);
-
 has 'role_name' => (
-    is        => 'ro',
-    isa       => 'Str',
-    lazy      => 1,
-    builder   => '_build_role_name',
-    predicate => 'is_role_name_set',
-);
-
-sub _build_role {
-    my $self = $_[0];
-    Class::MOP::class_of( $self->role_name );
-}
+    is            => 'ro',
+    isa           => 'Str',
+    required      => 1,
+    documentation => "This attribute can be used for fetching metaclass instance:\n".
+                     "    my \$metaclass_instance = Moose::Util::find_meta( \$exception->role_name );\n",
 
-sub _build_role_name {
-    my $self = $_[0];
-    $self->role->name;
-}
-
-after "BUILD" => sub {
-    my $self = $_[0];
-    if( !( $self->is_role_name_set) && !( $self->is_role_set) )
-    {
-        throw_exception("NeitherRoleNorRoleNameIsGiven");
-    }
-
-    if( $self->is_role_name_set &&
-        $self->is_role_set &&
-        ( $self->role->name ne $self->role_name ) )
-    {
-        throw_exception( RoleNamesDoNotMatch => role_name => $self->role_name,
-                                                role      => $self->role,
-                       );
-    }
-};
+);
 
 1;
@@ -2,7 +2,7 @@ package Moose::Exception::Role::RoleForCreate;
 BEGIN {
   $Moose::Exception::Role::RoleForCreate::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::Role::RoleForCreate::VERSION = '2.1204';
+$Moose::Exception::Role::RoleForCreate::VERSION = '2.1210';
 use Moose::Role;
 with 'Moose::Exception::Role::ParamsHash';
 
@@ -13,4 +13,3 @@ has 'attribute_class' => (
 );
 
 1;
-
@@ -2,7 +2,7 @@ package Moose::Exception::Role::RoleForCreateMOPClass;
 BEGIN {
   $Moose::Exception::Role::RoleForCreateMOPClass::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::Role::RoleForCreateMOPClass::VERSION = '2.1204';
+$Moose::Exception::Role::RoleForCreateMOPClass::VERSION = '2.1210';
 use Moose::Role;
 with 'Moose::Exception::Role::ParamsHash';
 
@@ -13,4 +13,3 @@ has 'class' => (
 );
 
 1;
-
@@ -2,52 +2,15 @@ package Moose::Exception::Role::TypeConstraint;
 BEGIN {
   $Moose::Exception::Role::TypeConstraint::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::Role::TypeConstraint::VERSION = '2.1204';
+$Moose::Exception::Role::TypeConstraint::VERSION = '2.1210';
 use Moose::Role;
-use Moose::Util qw/throw_exception/;
-use Moose::Util::TypeConstraints qw/find_type_constraint/;
-
-has 'type' => (
-    is        => 'rw',
-    isa       => 'Moose::Meta::TypeConstraint',
-    lazy      => 1,
-    builder   => '_build_type',
-    predicate => 'is_type_set',
-);
 
 has 'type_name' => (
-    is        => 'ro',
-    isa       => 'Str',
-    lazy      => 1,
-    builder   => '_build_type_name',
-    predicate => 'is_type_name_set',
+    is            => 'ro',
+    isa           => 'Str',
+    required      => 1,
+    documentation => "This attribute can be used for fetching type constraint(Moose::Meta::TypeConstraint):\n".
+                     "    my \$type_constraint =  Moose::Util::TypeConstraints::find_type_constraint( \$exception->type_name );\n",
 );
 
-sub _build_type {
-    my $self = $_[0];
-    Moose::Util::TypeConstraints::find_type_constraint( $self->type_name );
-}
-
-sub _build_type_name {
-    my $self = $_[0];
-    $self->type->name;
-}
-
-after "BUILD" => sub {
-    my $self = $_[0];
-    if( !( $self->is_type_name_set) && !( $self->is_type_set) )
-    {
-        throw_exception("NeitherTypeNorTypeNameIsGiven");
-    }
-
-    if( $self->is_type_name_set &&
-        $self->is_type_set &&
-        ( $self->type->name ne $self->type_name ) )
-    {
-        throw_exception( TypeNamesDoNotMatch => type_name => $self->type_name,
-                                                type      => $self->type,
-                       );
-    }
-};
-
 1;
@@ -2,26 +2,28 @@ package Moose::Exception::RoleDoesTheExcludedRole;
 BEGIN {
   $Moose::Exception::RoleDoesTheExcludedRole::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::RoleDoesTheExcludedRole::VERSION = '2.1204';
+$Moose::Exception::RoleDoesTheExcludedRole::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role';
 
-has 'excluded_role' => (
+has 'excluded_role_name' => (
     is       => 'ro',
-    isa      => 'Moose::Meta::Role',
+    isa      => 'Str',
     required => 1
 );
 
-has 'second_role' => (
+has 'second_role_name' => (
     is       => 'ro',
-    isa      => 'Moose::Meta::Role',
+    isa      => 'Str',
     required => 1
 );
 
 sub _build_message {
-    my $self = shift;
-    "The role " . $self->role_name . " does the excluded role '".$self->excluded_role->name."'";
+    my $self               = shift;
+    my $role_name          = $self->role_name;
+    my $excluded_role_name = $self->excluded_role_name;
+    return "The role $role_name does the excluded role '$excluded_role_name'";
 }
 
 1;
@@ -2,7 +2,7 @@ package Moose::Exception::RoleExclusionConflict;
 BEGIN {
   $Moose::Exception::RoleExclusionConflict::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::RoleExclusionConflict::VERSION = '2.1204';
+$Moose::Exception::RoleExclusionConflict::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role';
@@ -2,7 +2,7 @@ package Moose::Exception::RoleNameRequired;
 BEGIN {
   $Moose::Exception::RoleNameRequired::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::RoleNameRequired::VERSION = '2.1204';
+$Moose::Exception::RoleNameRequired::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -2,7 +2,7 @@ package Moose::Exception::RoleNameRequiredForMooseMetaRole;
 BEGIN {
   $Moose::Exception::RoleNameRequiredForMooseMetaRole::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::RoleNameRequiredForMooseMetaRole::VERSION = '2.1204';
+$Moose::Exception::RoleNameRequiredForMooseMetaRole::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role';
@@ -1,26 +0,0 @@
-package Moose::Exception::RoleNamesDoNotMatch;
-BEGIN {
-  $Moose::Exception::RoleNamesDoNotMatch::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::RoleNamesDoNotMatch::VERSION = '2.1204';
-use Moose;
-extends 'Moose::Exception';
-
-has role_name => (
-    is       => 'ro',
-    isa      => 'Str',
-    required => 1,
-);
-
-has role => (
-    is       => 'ro',
-    isa      => 'Moose::Meta::Role',
-    required => 1,
-);
-
-sub _build_message {
-    my $self = shift;
-    "role_name (".$self-> role_name.") does not match role->name (".$self->role->name.")";
-}
-
-1;
@@ -2,7 +2,7 @@ package Moose::Exception::RolesDoNotSupportAugment;
 BEGIN {
   $Moose::Exception::RolesDoNotSupportAugment::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::RolesDoNotSupportAugment::VERSION = '2.1204';
+$Moose::Exception::RolesDoNotSupportAugment::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::RolesDoNotSupportExtends;
 BEGIN {
   $Moose::Exception::RolesDoNotSupportExtends::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::RolesDoNotSupportExtends::VERSION = '2.1204';
+$Moose::Exception::RolesDoNotSupportExtends::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::RolesDoNotSupportInner;
 BEGIN {
   $Moose::Exception::RolesDoNotSupportInner::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::RolesDoNotSupportInner::VERSION = '2.1204';
+$Moose::Exception::RolesDoNotSupportInner::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::RolesDoNotSupportRegexReferencesForMethodModifiers;
 BEGIN {
   $Moose::Exception::RolesDoNotSupportRegexReferencesForMethodModifiers::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::RolesDoNotSupportRegexReferencesForMethodModifiers::VERSION = '2.1204';
+$Moose::Exception::RolesDoNotSupportRegexReferencesForMethodModifiers::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role';
@@ -2,7 +2,7 @@ package Moose::Exception::RolesInCreateTakesAnArrayRef;
 BEGIN {
   $Moose::Exception::RolesInCreateTakesAnArrayRef::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::RolesInCreateTakesAnArrayRef::VERSION = '2.1204';
+$Moose::Exception::RolesInCreateTakesAnArrayRef::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -2,7 +2,7 @@ package Moose::Exception::RolesListMustBeInstancesOfMooseMetaRole;
 BEGIN {
   $Moose::Exception::RolesListMustBeInstancesOfMooseMetaRole::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::RolesListMustBeInstancesOfMooseMetaRole::VERSION = '2.1204';
+$Moose::Exception::RolesListMustBeInstancesOfMooseMetaRole::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -2,7 +2,7 @@ package Moose::Exception::SingleParamsToNewMustBeHashRef;
 BEGIN {
   $Moose::Exception::SingleParamsToNewMustBeHashRef::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::SingleParamsToNewMustBeHashRef::VERSION = '2.1204';
+$Moose::Exception::SingleParamsToNewMustBeHashRef::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::TriggerMustBeACodeRef;
 BEGIN {
   $Moose::Exception::TriggerMustBeACodeRef::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::TriggerMustBeACodeRef::VERSION = '2.1204';
+$Moose::Exception::TriggerMustBeACodeRef::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::InvalidAttributeOptions';
@@ -2,15 +2,25 @@ package Moose::Exception::TypeConstraintCannotBeUsedForAParameterizableType;
 BEGIN {
   $Moose::Exception::TypeConstraintCannotBeUsedForAParameterizableType::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::TypeConstraintCannotBeUsedForAParameterizableType::VERSION = '2.1204';
+$Moose::Exception::TypeConstraintCannotBeUsedForAParameterizableType::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::TypeConstraint';
 
+has 'parent_type_name' => (
+    is            => 'ro',
+    isa           => 'Str',
+    required      => 1,
+    documentation => "This attribute can be used for fetching type constraint(Moose::Meta::TypeConstraint):\n".
+                     "    my \$type_constraint =  Moose::Util::TypeConstraints::find_type_constraint( \$exception->parent_type_name );\n",
+);
+
 sub _build_message {
-    my $self = shift;
-    "The " . $self->type_name . " constraint cannot be used, because "
-    . $self->type->parent->name . " doesn't subtype or coerce from a parameterizable type."
+    my $self             = shift;
+    my $type_name        = $self->type_name;
+    my $parent_type_name = $self->parent_type_name;
+    "The $type_name constraint cannot be used, because "
+        . "$parent_type_name doesn't subtype or coerce from a parameterizable type.";
 }
 
 1;
@@ -2,11 +2,13 @@ package Moose::Exception::TypeConstraintIsAlreadyCreated;
 BEGIN {
   $Moose::Exception::TypeConstraintIsAlreadyCreated::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::TypeConstraintIsAlreadyCreated::VERSION = '2.1204';
+$Moose::Exception::TypeConstraintIsAlreadyCreated::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::TypeConstraint';
 
+use Moose::Util::TypeConstraints 'find_type_constraint';
+
 has 'package_defined_in' => (
     is       => 'ro',
     isa      => 'Str',
@@ -14,8 +16,12 @@ has 'package_defined_in' => (
 );
 
 sub _build_message {
-    my $self = shift;
-    "The type constraint '".$self->type->name."' has already been created in ".$self->type->_package_defined_in." and cannot be created again in ".$self->package_defined_in;
+    my $self                    = shift;
+    my $type_name               = $self->type_name;
+    my $type                    = find_type_constraint( $type_name );
+    my $type_package_defined_in = $type->_package_defined_in;
+    my $package_defined_in      = $self->package_defined_in;
+    return "The type constraint '$type_name' has already been created in $type_package_defined_in and cannot be created again in $package_defined_in";
 }
 
 1;
@@ -1,26 +0,0 @@
-package Moose::Exception::TypeNamesDoNotMatch;
-BEGIN {
-  $Moose::Exception::TypeNamesDoNotMatch::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::TypeNamesDoNotMatch::VERSION = '2.1204';
-use Moose;
-extends 'Moose::Exception';
-
-has type_name => (
-    is       => 'ro',
-    isa      => 'Str',
-    required => 1,
-);
-
-has type => (
-    is       => 'ro',
-    isa      => 'Moose::Meta::TypeConstraint',
-    required => 1,
-);
-
-sub _build_message {
-    my $self = shift;
-    "type_name (".$self-> type_name.") does not match type->name (".$self->type->name.")";
-}
-
-1;
@@ -2,7 +2,7 @@ package Moose::Exception::TypeParameterMustBeMooseMetaType;
 BEGIN {
   $Moose::Exception::TypeParameterMustBeMooseMetaType::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::TypeParameterMustBeMooseMetaType::VERSION = '2.1204';
+$Moose::Exception::TypeParameterMustBeMooseMetaType::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::TypeConstraint';
@@ -2,7 +2,7 @@ package Moose::Exception::UnableToCanonicalizeHandles;
 BEGIN {
   $Moose::Exception::UnableToCanonicalizeHandles::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::UnableToCanonicalizeHandles::VERSION = '2.1204';
+$Moose::Exception::UnableToCanonicalizeHandles::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Attribute';
@@ -2,7 +2,7 @@ package Moose::Exception::UnableToCanonicalizeNonRolePackage;
 BEGIN {
   $Moose::Exception::UnableToCanonicalizeNonRolePackage::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::UnableToCanonicalizeNonRolePackage::VERSION = '2.1204';
+$Moose::Exception::UnableToCanonicalizeNonRolePackage::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Attribute';
@@ -2,7 +2,7 @@ package Moose::Exception::UnableToRecognizeDelegateMetaclass;
 BEGIN {
   $Moose::Exception::UnableToRecognizeDelegateMetaclass::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::UnableToRecognizeDelegateMetaclass::VERSION = '2.1204';
+$Moose::Exception::UnableToRecognizeDelegateMetaclass::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Attribute';
@@ -2,7 +2,7 @@ package Moose::Exception::UndefinedHashKeysPassedToMethod;
 BEGIN {
   $Moose::Exception::UndefinedHashKeysPassedToMethod::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::UndefinedHashKeysPassedToMethod::VERSION = '2.1204';
+$Moose::Exception::UndefinedHashKeysPassedToMethod::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::UnionCalledWithAnArrayRefAndAdditionalArgs;
 BEGIN {
   $Moose::Exception::UnionCalledWithAnArrayRefAndAdditionalArgs::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::UnionCalledWithAnArrayRefAndAdditionalArgs::VERSION = '2.1204';
+$Moose::Exception::UnionCalledWithAnArrayRefAndAdditionalArgs::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::UnionTakesAtleastTwoTypeNames;
 BEGIN {
   $Moose::Exception::UnionTakesAtleastTwoTypeNames::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::UnionTakesAtleastTwoTypeNames::VERSION = '2.1204';
+$Moose::Exception::UnionTakesAtleastTwoTypeNames::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 
@@ -2,7 +2,7 @@ package Moose::Exception::ValidationFailedForInlineTypeConstraint;
 BEGIN {
   $Moose::Exception::ValidationFailedForInlineTypeConstraint::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::ValidationFailedForInlineTypeConstraint::VERSION = '2.1204';
+$Moose::Exception::ValidationFailedForInlineTypeConstraint::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -2,7 +2,7 @@ package Moose::Exception::ValidationFailedForTypeConstraint;
 BEGIN {
   $Moose::Exception::ValidationFailedForTypeConstraint::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::ValidationFailedForTypeConstraint::VERSION = '2.1204';
+$Moose::Exception::ValidationFailedForTypeConstraint::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Attribute';
@@ -2,7 +2,7 @@ package Moose::Exception::WrapTakesACodeRefToBless;
 BEGIN {
   $Moose::Exception::WrapTakesACodeRefToBless::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::WrapTakesACodeRefToBless::VERSION = '2.1204';
+$Moose::Exception::WrapTakesACodeRefToBless::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -2,7 +2,7 @@ package Moose::Exception::WrongTypeConstraintGiven;
 BEGIN {
   $Moose::Exception::WrongTypeConstraintGiven::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::WrongTypeConstraintGiven::VERSION = '2.1204';
+$Moose::Exception::WrongTypeConstraintGiven::VERSION = '2.1210';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -2,7 +2,7 @@ package Moose::Exception;
 BEGIN {
   $Moose::Exception::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exception::VERSION = '2.1204';
+$Moose::Exception::VERSION = '2.1210';
 use Moose;
 use Devel::StackTrace;
 
@@ -51,7 +51,7 @@ sub BUILD {
 
 1;
 
-# ABSTRACT: Superclass of all Moose exceptions
+# ABSTRACT: Superclass for Moose internal exceptions
 
 __END__
 
@@ -61,16 +61,26 @@ __END__
 
 =head1 NAME
 
-Moose::Exception - Superclass of all Moose exceptions
+Moose::Exception - Superclass for Moose internal exceptions
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
-This class contains attributes which are common to all Moose exceptions
-classes.
+This class contains attributes which are common to all Moose internal
+exception classes.
+
+=head1 WARNING WARNING WARNING
+
+If you're writing your own exception classes, you should instead prefer
+the L<Throwable> role or the L<Throwable::Error> superclass - this is
+effectively a cut-down internal fork of the latter, and not designed
+for use in user code.
+
+Of course if you're writing metaclass traits, it would then make sense to
+subclass the relevant Moose exceptions - but only then.
 
 =head1 ATTRIBUTES
 
@@ -2,7 +2,7 @@ package Moose::Exporter;
 BEGIN {
   $Moose::Exporter::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Exporter::VERSION = '2.1204';
+$Moose::Exporter::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -794,7 +794,7 @@ Moose::Exporter - make an import() and unimport() just like Moose.pm
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -1,7 +1,4 @@
-package Moose::Intro;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Intro
 # ABSTRACT: Expanded into Moose::Manual, so go read that
 
 __END__
@@ -16,7 +13,7 @@ Moose::Intro - Expanded into Moose::Manual, so go read that
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -1,7 +1,4 @@
-package Moose::Manual::Attributes;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Manual::Attributes
 # ABSTRACT: Object attributes with Moose
 
 __END__
@@ -16,7 +13,7 @@ Moose::Manual::Attributes - Object attributes with Moose
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 INTRODUCTION
 
@@ -1,7 +1,4 @@
-package Moose::Manual::BestPractices;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Manual::BestPractices
 # ABSTRACT: Get the most out of Moose
 
 __END__
@@ -16,7 +13,7 @@ Moose::Manual::BestPractices - Get the most out of Moose
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 RECOMMENDATIONS
 
@@ -1,7 +1,4 @@
-package Moose::Manual::Classes;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Manual::Classes
 # ABSTRACT: Making your classes use Moose (and subclassing)
 
 __END__
@@ -16,7 +13,7 @@ Moose::Manual::Classes - Making your classes use Moose (and subclassing)
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 USING MOOSE
 
@@ -1,7 +1,4 @@
-package Moose::Manual::Concepts;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Manual::Concepts
 # ABSTRACT: Moose OO concepts
 
 __END__
@@ -16,7 +13,7 @@ Moose::Manual::Concepts - Moose OO concepts
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 MOOSE CONCEPTS (VS "OLD SCHOOL" Perl)
 
@@ -1,7 +1,4 @@
-package Moose::Manual::Construction;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Manual::Construction
 # ABSTRACT: Object construction (and destruction) with Moose
 
 __END__
@@ -16,7 +13,7 @@ Moose::Manual::Construction - Object construction (and destruction) with Moose
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 WHERE'S THE CONSTRUCTOR?
 
@@ -1,7 +1,4 @@
-package Moose::Manual::Contributing;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Manual::Contributing
 # ABSTRACT: How to get involved in Moose
 
 __END__
@@ -16,7 +13,7 @@ Moose::Manual::Contributing - How to get involved in Moose
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 GETTING INVOLVED
 
@@ -1,7 +1,4 @@
-package Moose::Manual::Delegation;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Manual::Delegation
 # ABSTRACT: Attribute delegation
 
 __END__
@@ -16,7 +13,7 @@ Moose::Manual::Delegation - Attribute delegation
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 WHAT IS DELEGATION?
 
@@ -1,7 +1,4 @@
-package Moose::Manual::Delta;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Manual::Delta
 # ABSTRACT: Important Changes in Moose
 
 __END__
@@ -16,7 +13,7 @@ Moose::Manual::Delta - Important Changes in Moose
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -335,7 +332,7 @@ After upgrading Moose, running C<moose-outdated | cpanm> should be sufficient
 to ensure that all of the Moose extensions you use will continue to work.
 
 The other part is that Moose's C<META.json> file will also specify the
-conflicts under the C<x_conflicts> key. We are working with the Perl tool chain
+conflicts under the C<x_conflicts> (now C<x_breaks>) key. We are working with the Perl tool chain
 developers to try to get conflicts support added to CPAN clients, and if/when
 that happens, the metadata already exists, and so the conflict checking will
 become automatic.
@@ -1,8 +1,8 @@
-package Moose::Manual::Exceptions::Manifest;
 use strict;
 use warnings;
-
+package Moose::Manual::Exceptions::Manifest;
 # ABSTRACT: Moose's Exception Types
+$Moose::Manual::Exceptions::Manifest::VERSION = '2.1210';
 
 __END__
 
@@ -16,68 +16,7 @@ Moose::Manual::Exceptions::Manifest - Moose's Exception Types
 
 =head1 VERSION
 
-version 2.1204
-
-=head1 NAME
-
-Moose::Manual::Exceptions::Manifest - Moose's Exception Types
-
-=head1 VERSION
-
-version 2.1204
-
-=head1 AUTHORS
-
-=over 4
-
-=item *
-
-Stevan Little <stevan.little@iinteractive.com>
-
-=item *
-
-Dave Rolsky <autarch@urth.org>
-
-=item *
-
-Jesse Luehrs <doy@tozt.net>
-
-=item *
-
-Shawn M Moore <code@sartak.org>
-
-=item *
-
-יובל קוג'מן (Yuval Kogman) <nothingmuch@woobling.org>
-
-=item *
-
-Karen Etheridge <ether@cpan.org>
-
-=item *
-
-Florian Ragwitz <rafl@debian.org>
-
-=item *
-
-Hans Dieter Pearcey <hdp@weftsoar.net>
-
-=item *
-
-Chris Prather <chris@prather.org>
-
-=item *
-
-Matt S Trout <mst@shadowcat.co.uk>
-
-=back
-
-=head1 COPYRIGHT AND LICENSE
-
-This software is copyright (c) 2006 by Infinity Interactive, Inc..
-
-This is free software; you can redistribute it and/or modify it under
-the same terms as the Perl 5 programming language system itself.
+version 2.1210
 
 =head1 Moose::Exception::AccessorMustReadWrite
 
@@ -163,15 +102,11 @@ L<Moose::Exception::Role::Class>.
 
 =over 4
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->message >>
 
@@ -211,15 +146,11 @@ L<Moose::Exception::Role::Role>.
 This attribute is read-only and isa Str. It is lazy and has a default value
 'Error'.
 
-=item B<< $exception->role >>
-
-This attribute is read-only, isa L<Moose::Meta::Role>, has a predicate
-C<is_role_set> and is optional.
-
 =item B<< $exception->role_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_role_name_set> and is
- optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->role_name );
+
 
 =item B<< $exception->role_to_be_added >>
 
@@ -258,15 +189,11 @@ This attribute is read-only and isa Str. It is lazy and has a default value
 
 This attribute is read-only, isa Any and is required.
 
-=item B<< $exception->role >>
-
-This attribute is read-only, isa L<Moose::Meta::Role>, has a predicate
-C<is_role_set> and is optional.
-
 =item B<< $exception->role_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_role_name_set> and is
- optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->role_name );
+
 
 =item B<< $exception->trace >>
 
@@ -339,19 +266,15 @@ This attribute is read-only, isa Str and is required.
 This attribute is read-only and isa Str. It is lazy and has a default value
 'Error'.
 
-=item B<< $exception->role >>
-
-This attribute is read-only, isa L<Moose::Meta::Role>, has a predicate
-C<is_role_set> and is optional.
-
 =item B<< $exception->role_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_role_name_set> and is
- optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->role_name );
 
-=item B<< $exception->second_role >>
 
-This attribute is read-only, isa L<Moose::Meta::Role> and is required.
+=item B<< $exception->second_role_name >>
+
+This attribute is read-only, isa Str and is required.
 
 =item B<< $exception->trace >>
 
@@ -388,19 +311,15 @@ This attribute is read-only, isa Str and is required.
 This attribute is read-only and isa Str. It is lazy and has a default value
 'Error'.
 
-=item B<< $exception->role >>
-
-This attribute is read-only, isa L<Moose::Meta::Role>, has a predicate
-C<is_role_set> and is optional.
-
 =item B<< $exception->role_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_role_name_set> and is
- optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->role_name );
 
-=item B<< $exception->second_role >>
 
-This attribute is read-only, isa L<Moose::Meta::Role> and is required.
+=item B<< $exception->second_role_name >>
+
+This attribute is read-only, isa Str and is required.
 
 =item B<< $exception->trace >>
 
@@ -437,15 +356,11 @@ This attribute is read-only, isa Str and is required.
 This attribute is read-only and isa Str. It is lazy and has a default value
 'Error'.
 
-=item B<< $exception->role >>
-
-This attribute is read-only, isa L<Moose::Meta::Role>, has a predicate
-C<is_role_set> and is optional.
-
 =item B<< $exception->role_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_role_name_set> and is
- optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->role_name );
+
 
 =item B<< $exception->trace >>
 
@@ -471,25 +386,18 @@ L<Moose::Exception::Role::Class>.
 
 =over 4
 
-=item B<< $exception->attribute >>
-
-This attribute is read-only, isa L<Class::MOP::Attribute>, has a predicate
-C<has_attribute> and is optional.
-
 =item B<< $exception->attribute_name >>
 
-This attribute is read-only, isa Str, has a predicate C<has_attribute_name> and
-is optional.
+This attribute can be used for fetching attribute instance:
+    my $class = Moose::Util::find_meta( $exception->class_name );
+    my $attribute = $class->get_attribute( $exception->attribute_name );
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
 
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->message >>
 
@@ -514,7 +422,6 @@ This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
     Attribute (bar) is required
     Attribute (foo_required) is required
     Attribute (baz) is required
-    Attribute (foo) is required
 
 =head1 Moose::Exception::AttributeMustBeAnClassMOPMixinAttributeCoreOrSubclass
 
@@ -533,15 +440,11 @@ L<Moose::Exception::Role::Class>.
 
 This attribute is read-only, isa Any and is required.
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->message >>
 
@@ -592,9 +495,8 @@ This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
 
 =back
 
-=head4 Sample Error Messages:
+=head4 Sample Error Message:
 
-    attribute_name (foo1) does not match attribute->name (foo)
     attribute_name (foo) does not match attribute->name (bar)
 
 =head1 Moose::Exception::AttributeValueIsNotAnObject
@@ -904,15 +806,11 @@ This attribute is read-only, isa Str and is required.
 
 This attribute is read-only, isa Str and is required.
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->instance >>
 
@@ -1038,7 +936,8 @@ This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
 
 =head1 Moose::Exception::CanExtendOnlyClasses
 
-This class is a subclass of L<Moose::Exception>.
+This class is a subclass of L<Moose::Exception> and consumes role
+L<Moose::Exception::Role::Role>.
 
 =over 4
 
@@ -1053,9 +952,11 @@ This class is a subclass of L<Moose::Exception>.
 This attribute is read-only and isa Str. It is lazy and has a default value
 'Error'.
 
-=item B<< $exception->role >>
+=item B<< $exception->role_name >>
+
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->role_name );
 
-This attribute is read-only, isa L<Moose::Meta::Role> and is required.
 
 =item B<< $exception->trace >>
 
@@ -1123,15 +1024,11 @@ This attribute is read-only, isa Str and is required.
 This attribute is read-only and isa Str. It is lazy and has a default value
 'Error'.
 
-=item B<< $exception->role >>
-
-This attribute is read-only, isa L<Moose::Meta::Role>, has a predicate
-C<is_role_set> and is optional.
-
 =item B<< $exception->role_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_role_name_set> and is
- optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->role_name );
+
 
 =item B<< $exception->trace >>
 
@@ -1166,15 +1063,11 @@ This attribute is read-only and isa Str. It is lazy and has a default value
 
 This attribute is read-only, isa HashRef and is required.
 
-=item B<< $exception->role >>
-
-This attribute is read-only, isa L<Moose::Meta::Role>, has a predicate
-C<is_role_set> and is optional.
-
 =item B<< $exception->role_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_role_name_set> and is
- optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->role_name );
+
 
 =item B<< $exception->trace >>
 
@@ -1211,15 +1104,11 @@ C<has_attribute> and is optional.
 This attribute is read-only, isa Str, has a predicate C<has_attribute_name> and
 is optional.
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->message >>
 
@@ -1259,15 +1148,11 @@ L<Moose::Exception::Role::Class> and L<Moose::Exception::Role::Method>.
 
 =over 4
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->message >>
 
@@ -1363,15 +1248,12 @@ This attribute is read-only and isa Str. It is lazy and has a default value
 This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
  on $exception->message.
 
-=item B<< $exception->type >>
-
-This attribute is read-only, isa L<Moose::Meta::TypeConstraint>, has a predicate
- C<is_type_set> and is optional.
-
 =item B<< $exception->type_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_type_name_set> and is
- optional.
+This attribute can be used for fetching type
+constraint(Moose::Meta::TypeConstraint):
+    my $type_constraint =  Moose::Util::TypeConstraints::find_type_constraint(
+$exception->type_name );
 
 =back
 
@@ -1545,15 +1427,12 @@ This attribute is read-only, isa HashRef and is required.
 This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
  on $exception->message.
 
-=item B<< $exception->type >>
-
-This attribute is read-only, isa L<Moose::Meta::TypeConstraint>, has a predicate
- C<is_type_set> and is optional.
-
 =item B<< $exception->type_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_type_name_set> and is
- optional.
+This attribute can be used for fetching type
+constraint(Moose::Meta::TypeConstraint):
+    my $type_constraint =  Moose::Util::TypeConstraints::find_type_constraint(
+$exception->type_name );
 
 =back
 
@@ -1622,15 +1501,12 @@ This attribute is read-only and isa Str. It is lazy and has a default value
 This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
  on $exception->message.
 
-=item B<< $exception->type >>
-
-This attribute is read-only, isa L<Moose::Meta::TypeConstraint>, has a predicate
- C<is_type_set> and is optional.
-
 =item B<< $exception->type_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_type_name_set> and is
- optional.
+This attribute can be used for fetching type
+constraint(Moose::Meta::TypeConstraint):
+    my $type_constraint =  Moose::Util::TypeConstraints::find_type_constraint(
+$exception->type_name );
 
 =back
 
@@ -1664,19 +1540,15 @@ This attribute is read-only and isa Str. It is lazy and has a default value
 
 This attribute is read-only, isa L<Moose::Meta::Method> and is required.
 
-=item B<< $exception->role >>
+=item B<< $exception->role_being_applied_name >>
 
-This attribute is read-only, isa L<Moose::Meta::Role>, has a predicate
-C<is_role_set> and is optional.
-
-=item B<< $exception->role_being_applied >>
-
-This attribute is read-only, isa L<Moose::Meta::Role> and is required.
+This attribute is read-only, isa Str and is required.
 
 =item B<< $exception->role_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_role_name_set> and is
- optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->role_name );
+
 
 =item B<< $exception->trace >>
 
@@ -1707,15 +1579,11 @@ L<Moose::Exception::Role::Role>.
 
 This attribute is read-only, isa Str and is required.
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->message >>
 
@@ -1726,15 +1594,11 @@ This attribute is read-only and isa Str. It is lazy and has a default value
 
 This attribute is read-only, isa L<Moose::Meta::Method> and is required.
 
-=item B<< $exception->role >>
-
-This attribute is read-only, isa L<Moose::Meta::Role>, has a predicate
-C<is_role_set> and is optional.
-
 =item B<< $exception->role_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_role_name_set> and is
- optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->role_name );
+
 
 =item B<< $exception->trace >>
 
@@ -1938,15 +1802,11 @@ L<Moose::Exception::Role::Class>.
 
 =over 4
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->message >>
 
@@ -1992,25 +1852,26 @@ L<Moose::Exception::Role::TypeConstraint>.
 This attribute is read-only and isa Str. It is lazy and has a default value
 'Error'.
 
-=item B<< $exception->parameterizable_type_object >>
+=item B<< $exception->parameterizable_type_object_name >>
+
+This attribute can be used for fetching parameterizable type
+constraint(Moose::Meta::TypeConstraint::Parameterizable):
+    my $type_constraint =  Moose::Util::TypeConstraints::find_type_constraint(
+$exception->type_name );
 
-This attribute is read-only, isa L<Moose::Meta::TypeConstraint::Parameterizable>
- and is required.
 
 =item B<< $exception->trace >>
 
 This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
  on $exception->message.
 
-=item B<< $exception->type >>
-
-This attribute is read-only, isa L<Moose::Meta::TypeConstraint>, has a predicate
- C<is_type_set> and is optional.
-
 =item B<< $exception->type_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_type_name_set> and is
- optional.
+This attribute can be used for fetching type
+constraint(Moose::Meta::TypeConstraint):
+    my $type_constraint =  Moose::Util::TypeConstraints::find_type_constraint(
+$exception->type_name );
+
 
 =item B<< $exception->value >>
 
@@ -2086,15 +1947,12 @@ This attribute is read-only and isa Str. It is lazy and has a default value
 This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
  on $exception->message.
 
-=item B<< $exception->type >>
-
-This attribute is read-only, isa L<Moose::Meta::TypeConstraint>, has a predicate
- C<is_type_set> and is optional.
-
 =item B<< $exception->type_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_type_name_set> and is
- optional.
+This attribute can be used for fetching type
+constraint(Moose::Meta::TypeConstraint):
+    my $type_constraint =  Moose::Util::TypeConstraints::find_type_constraint(
+$exception->type_name );
 
 =back
 
@@ -2104,8 +1962,8 @@ This attribute is read-only, isa Str, has a predicate C<is_type_name_set> and is
 
 =head1 Moose::Exception::CannotLocatePackageInINC
 
-This class is a subclass of L<Moose::Exception> and consume roles
-L<Moose::Exception::Role::ParamsHash>, L<Moose::Exception::Role::TypeConstraint>.
+This class is a subclass of L<Moose::Exception> and consumes role
+L<Moose::Exception::Role::ParamsHash>.
 
 =over 4
 
@@ -2143,19 +2001,14 @@ This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
 
 =item B<< $exception->type >>
 
-This attribute is read-only, isa L<Moose::Meta::TypeConstraint>, has a predicate
- C<is_type_set> and is optional.
-
-=item B<< $exception->type_name >>
-
-This attribute is read-only, isa Str, has a predicate C<is_type_name_set> and is
- optional.
+This attribute is read-only, isa Str and is required.
 
 =back
 
 =head4 Sample Error Message:
 
-    Can't locate Moose::Meta::Int::Custom::Xyz or Xyz in \@INC \(\@INC contains:
+    Can't locate Moose::Meta::Attribute::Custom::Trait::Xyz or Xyz in \@INC \(\@
+INC contains:
 
 =head1 Moose::Exception::CannotMakeMetaclassCompatible
 
@@ -2170,15 +2023,11 @@ L<Moose::Exception::Role::Class>.
 
 =over 4
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->message >>
 
@@ -2220,15 +2069,11 @@ This attribute is read-only and isa Str. It is lazy and has a default value
 
 This attribute is read-only, isa Str and is required.
 
-=item B<< $exception->role >>
-
-This attribute is read-only, isa L<Moose::Meta::Role>, has a predicate
-C<is_role_set> and is optional.
-
 =item B<< $exception->role_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_role_name_set> and is
- optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->role_name );
+
 
 =item B<< $exception->trace >>
 
@@ -2292,15 +2137,11 @@ L<Moose::Exception::Role::Class> and L<Moose::Exception::Role::Method>.
 
 =over 4
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->message >>
 
@@ -2365,8 +2206,7 @@ This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
 
 =head1 Moose::Exception::CannotRegisterUnnamedTypeConstraint
 
-This class is a subclass of L<Moose::Exception> and consumes role
-L<Moose::Exception::Role::TypeConstraint>.
+This class is a subclass of L<Moose::Exception>.
 
 =over 4
 
@@ -2386,16 +2226,6 @@ This attribute is read-only and isa Str. It is lazy and has a default value
 This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
  on $exception->message.
 
-=item B<< $exception->type >>
-
-This attribute is read-only, isa L<Moose::Meta::TypeConstraint>, has a predicate
- C<is_type_set> and is optional.
-
-=item B<< $exception->type_name >>
-
-This attribute is read-only, isa Str, has a predicate C<is_type_name_set> and is
- optional.
-
 =back
 
 =head4 Sample Error Message:
@@ -2517,7 +2347,7 @@ This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
 
 This class is a subclass of L<Moose::Exception> and consume roles
 L<Moose::Exception::Role::Class>, L<Moose::Exception::Role::Instance>,
-L<Moose::Exception::Role::ParamsHash>.
+L<Moose::Exception::Role::InstanceClass>, L<Moose::Exception::Role::ParamsHash>.
 
 =over 4
 
@@ -2527,20 +2357,20 @@ L<Moose::Exception::Role::ParamsHash>.
 
 =over 4
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->instance >>
 
 This attribute is read-only, isa Object and is required.
 
+=item B<< $exception->instance_class >>
+
+This attribute is read-only, isa Str and is required.
+
 =item B<< $exception->message >>
 
 This attribute is read-only and isa Str. It is lazy and has a default value
@@ -2564,7 +2394,8 @@ This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
 =head1 Moose::Exception::CanReblessOnlyIntoASuperclass
 
 This class is a subclass of L<Moose::Exception> and consume roles
-L<Moose::Exception::Role::Class> and L<Moose::Exception::Role::Instance>.
+L<Moose::Exception::Role::Class>, L<Moose::Exception::Role::Instance> and
+L<Moose::Exception::Role::InstanceClass>.
 
 =over 4
 
@@ -2574,20 +2405,20 @@ L<Moose::Exception::Role::Class> and L<Moose::Exception::Role::Instance>.
 
 =over 4
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->instance >>
 
 This attribute is read-only, isa Object and is required.
 
+=item B<< $exception->instance_class >>
+
+This attribute is read-only, isa Str and is required.
+
 =item B<< $exception->message >>
 
 This attribute is read-only and isa Str. It is lazy and has a default value
@@ -2654,15 +2485,11 @@ L<Moose::Exception::Role::Class>.
 
 =over 4
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->message >>
 
@@ -2698,34 +2525,26 @@ L<Moose::Exception::Role::Class>, L<Moose::Exception::Role::Role>.
 
 =over 4
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
 
-=item B<< $exception->excluded_role >>
 
-This attribute is read-only, isa L<Moose::Meta::Role> and is required.
+=item B<< $exception->excluded_role_name >>
+
+This attribute is read-only, isa Str and is required.
 
 =item B<< $exception->message >>
 
 This attribute is read-only and isa Str. It is lazy and has a default value
 'Error'.
 
-=item B<< $exception->role >>
-
-This attribute is read-only, isa L<Moose::Meta::Role>, has a predicate
-C<is_role_set> and is optional.
-
 =item B<< $exception->role_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_role_name_set> and is
- optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->role_name );
+
 
 =item B<< $exception->trace >>
 
@@ -2770,10 +2589,7 @@ This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
 
 =back
 
-=head4 Sample Error Messages:
-
-    class_name (TestClass1) does not match class->name (TestClass)
-    class_name (Foo) does not match class->name (DoesClassRole)
+=head4 Sample Error Message:
 
 =head1 Moose::Exception::CloneObjectExpectsAnInstanceOfMetaclass
 
@@ -2788,15 +2604,11 @@ L<Moose::Exception::Role::Class>.
 
 =over 4
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->instance >>
 
@@ -2857,7 +2669,8 @@ This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
 
 =head1 Moose::Exception::CoercingWithoutCoercions
 
-This class is a subclass of L<Moose::Exception>.
+This class is a subclass of L<Moose::Exception> and consumes role
+L<Moose::Exception::Role::TypeConstraint>.
 
 =over 4
 
@@ -2877,9 +2690,12 @@ This attribute is read-only and isa Str. It is lazy and has a default value
 This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
  on $exception->message.
 
-=item B<< $exception->type >>
+=item B<< $exception->type_name >>
 
-This attribute is read-only, isa L<Moose::Meta::TypeConstraint> and is required.
+This attribute can be used for fetching type
+constraint(Moose::Meta::TypeConstraint):
+    my $type_constraint =  Moose::Util::TypeConstraints::find_type_constraint(
+$exception->type_name );
 
 =back
 
@@ -2976,24 +2792,20 @@ L<Moose::Exception::Role::Role>.
 
 =over 4
 
-=item B<< $exception->excluded_role >>
+=item B<< $exception->excluded_role_name >>
 
-This attribute is read-only, isa L<Moose::Meta::Role> and is required.
+This attribute is read-only, isa Str and is required.
 
 =item B<< $exception->message >>
 
 This attribute is read-only and isa Str. It is lazy and has a default value
 'Error'.
 
-=item B<< $exception->role >>
-
-This attribute is read-only, isa L<Moose::Meta::Role>, has a predicate
-C<is_role_set> and is optional.
-
 =item B<< $exception->role_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_role_name_set> and is
- optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->role_name );
+
 
 =item B<< $exception->trace >>
 
@@ -3019,30 +2831,22 @@ L<Moose::Exception::Role::Class> and L<Moose::Exception::Role::Role>.
 
 =over 4
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->message >>
 
 This attribute is read-only and isa Str. It is lazy and has a default value
 'Error'.
 
-=item B<< $exception->role >>
-
-This attribute is read-only, isa L<Moose::Meta::Role>, has a predicate
-C<is_role_set> and is optional.
-
 =item B<< $exception->role_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_role_name_set> and is
- optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->role_name );
+
 
 =item B<< $exception->trace >>
 
@@ -3377,15 +3181,12 @@ This attribute is read-only and isa Str. It is lazy and has a default value
 This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
  on $exception->message.
 
-=item B<< $exception->type >>
-
-This attribute is read-only, isa L<Moose::Meta::TypeConstraint>, has a predicate
- C<is_type_set> and is optional.
-
 =item B<< $exception->type_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_type_name_set> and is
- optional.
+This attribute can be used for fetching type
+constraint(Moose::Meta::TypeConstraint):
+    my $type_constraint =  Moose::Util::TypeConstraints::find_type_constraint(
+$exception->type_name );
 
 =back
 
@@ -3814,7 +3615,8 @@ backed by a class
 
 =head1 Moose::Exception::DoesRequiresRoleName
 
-This class is a subclass of L<Moose::Exception>.
+This class is a subclass of L<Moose::Exception> and consumes role
+L<Moose::Exception::Role::Class>.
 
 =over 4
 
@@ -3824,9 +3626,11 @@ This class is a subclass of L<Moose::Exception>.
 
 =over 4
 
-=item B<< $exception->class >>
+=item B<< $exception->class_name >>
+
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
 
-This attribute is read-only, isa L<Moose::Meta::Class> and is required.
 
 =item B<< $exception->message >>
 
@@ -3936,15 +3740,11 @@ L<Moose::Exception::Role::Class>.
 
 =over 4
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->message >>
 
@@ -4090,15 +3890,15 @@ L<Moose::Exception::Role::Class>.
 
 =over 4
 
-=item B<< $exception->class >>
+=item B<< $exception->class_meta_type >>
 
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
+This attribute is read-only, isa Str and is required.
 
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->message >>
 
@@ -4204,15 +4004,11 @@ L<Moose::Exception::Role::ParamsHash>.
 
 =over 4
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->instance >>
 
@@ -4252,15 +4048,11 @@ L<Moose::Exception::Role::Class>, L<Moose::Exception::Role::ParamsHash>.
 
 =over 4
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->instance >>
 
@@ -4345,15 +4137,11 @@ L<Moose::Exception::Role::Class>.
 
 This attribute is read-only, isa Any and is required.
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->message >>
 
@@ -4471,15 +4259,12 @@ This attribute is read-only and isa Str. It is lazy and has a default value
 This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
  on $exception->message.
 
-=item B<< $exception->type >>
-
-This attribute is read-only, isa L<Moose::Meta::TypeConstraint>, has a predicate
- C<is_type_set> and is optional.
-
 =item B<< $exception->type_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_type_name_set> and is
- optional.
+This attribute can be used for fetching type
+constraint(Moose::Meta::TypeConstraint):
+    my $type_constraint =  Moose::Util::TypeConstraints::find_type_constraint(
+$exception->type_name );
 
 =back
 
@@ -4547,15 +4332,11 @@ This attribute is read-only, isa Str and is required.
 This attribute is read-only and isa Str. It is lazy and has a default value
 'Error'.
 
-=item B<< $exception->role >>
-
-This attribute is read-only, isa L<Moose::Meta::Role>, has a predicate
-C<is_role_set> and is optional.
-
 =item B<< $exception->role_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_role_name_set> and is
- optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->role_name );
+
 
 =item B<< $exception->trace >>
 
@@ -4617,15 +4398,11 @@ L<Moose::Exception::Role::Class>.
 
 This attribute is read-only, isa Any and is required.
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->message >>
 
@@ -4704,15 +4481,12 @@ This attribute is read-only and isa Str. It is lazy and has a default value
 This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
  on $exception->message.
 
-=item B<< $exception->type >>
-
-This attribute is read-only, isa L<Moose::Meta::TypeConstraint>, has a predicate
- C<is_type_set> and is optional.
-
 =item B<< $exception->type_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_type_name_set> and is
- optional.
+This attribute can be used for fetching type
+constraint(Moose::Meta::TypeConstraint):
+    my $type_constraint =  Moose::Util::TypeConstraints::find_type_constraint(
+$exception->type_name );
 
 =back
 
@@ -4911,7 +4685,8 @@ This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
 
 =head1 Moose::Exception::MatchActionMustBeACodeRef
 
-This class is a subclass of L<Moose::Exception>.
+This class is a subclass of L<Moose::Exception> and consumes role
+L<Moose::Exception::Role::TypeConstraint>.
 
 =over 4
 
@@ -4939,9 +4714,12 @@ This attribute is read-only, isa Any and is required.
 This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
  on $exception->message.
 
-=item B<< $exception->type >>
+=item B<< $exception->type_name >>
 
-This attribute is read-only, isa L<Moose::Meta::TypeConstraint> and is required.
+This attribute can be used for fetching type
+constraint(Moose::Meta::TypeConstraint):
+    my $type_constraint =  Moose::Util::TypeConstraints::find_type_constraint(
+$exception->type_name );
 
 =back
 
@@ -4999,15 +4777,11 @@ L<Moose::Exception::Role::Class>.
 
 =over 4
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->message >>
 
@@ -5053,15 +4827,11 @@ This attribute is read-only and isa Str. It is lazy and has a default value
 
 This attribute is read-only, isa Str and is required.
 
-=item B<< $exception->role >>
-
-This attribute is read-only, isa L<Moose::Meta::Role>, has a predicate
-C<is_role_set> and is optional.
-
 =item B<< $exception->role_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_role_name_set> and is
- optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->role_name );
+
 
 =item B<< $exception->trace >>
 
@@ -5089,15 +4859,11 @@ L<Moose::Exception::Role::Class>.
 
 =over 4
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->message >>
 
@@ -5135,15 +4901,11 @@ L<Moose::Exception::Role::Class>.
 
 =over 4
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->message >>
 
@@ -5179,15 +4941,11 @@ L<Moose::Exception::Role::Role>.
 This attribute is read-only and isa Str. It is lazy and has a default value
 'Error'.
 
-=item B<< $exception->role >>
-
-This attribute is read-only, isa L<Moose::Meta::Role>, has a predicate
-C<is_role_set> and is optional.
-
 =item B<< $exception->role_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_role_name_set> and is
- optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->role_name );
+
 
 =item B<< $exception->trace >>
 
@@ -5245,15 +5003,11 @@ L<Moose::Exception::Role::Class>.
 
 =over 4
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->message >>
 
@@ -5284,15 +5038,11 @@ L<Moose::Exception::Role::Class>.
 
 =over 4
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->message >>
 
@@ -5441,15 +5191,11 @@ L<Moose::Exception::Role::Class>.
 
 =over 4
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->message >>
 
@@ -5480,15 +5226,11 @@ L<Moose::Exception::Role::Class>.
 
 =over 4
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->conflict >>
 
@@ -5533,15 +5275,11 @@ L<Moose::Exception::Role::Class>.
 
 =over 4
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->message >>
 
@@ -5576,15 +5314,11 @@ L<Moose::Exception::Role::Class>.
 
 =over 4
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->message >>
 
@@ -5685,15 +5419,11 @@ L<Moose::Exception::Role::Class>.
 
 =over 4
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->message >>
 
@@ -5985,15 +5715,11 @@ L<Moose::Exception::Role::Role>.
 This attribute is read-only and isa Str. It is lazy and has a default value
 'Error'.
 
-=item B<< $exception->role >>
-
-This attribute is read-only, isa L<Moose::Meta::Role>, has a predicate
-C<is_role_set> and is optional.
-
 =item B<< $exception->role_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_role_name_set> and is
- optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->role_name );
+
 
 =item B<< $exception->trace >>
 
@@ -6024,15 +5750,11 @@ L<Moose::Exception::Role::Role>.
 This attribute is read-only and isa Str. It is lazy and has a default value
 'Error'.
 
-=item B<< $exception->role >>
-
-This attribute is read-only, isa L<Moose::Meta::Role>, has a predicate
-C<is_role_set> and is optional.
-
 =item B<< $exception->role_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_role_name_set> and is
- optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->role_name );
+
 
 =item B<< $exception->trace >>
 
@@ -6315,15 +6037,11 @@ L<Moose::Exception::Role::Class>, L<Moose::Exception::Role::ParamsHash>.
 
 =over 4
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->message >>
 
@@ -6405,11 +6123,6 @@ This attribute is read-only and isa Str. It is lazy and has a default value
 This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
  on $exception->message.
 
-=item B<< $exception->type >>
-
-This attribute is read-only, isa L<Moose::Meta::TypeConstraint>, has a predicate
- C<is_type_set> and is optional.
-
 =item B<< $exception->type_coercion_union_object >>
 
 This attribute is read-only, isa L<Moose::Meta::TypeCoercion::Union> and is
@@ -6417,8 +6130,10 @@ required.
 
 =item B<< $exception->type_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_type_name_set> and is
- optional.
+This attribute can be used for fetching type
+constraint(Moose::Meta::TypeConstraint):
+    my $type_constraint =  Moose::Util::TypeConstraints::find_type_constraint(
+$exception->type_name );
 
 =back
 
@@ -6481,8 +6196,6 @@ This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
 
 =head4 Sample Error Message:
 
-    You need to give class or class_name or both
-
 =head1 Moose::Exception::NeitherRoleNorRoleNameIsGiven
 
 This class is a subclass of L<Moose::Exception>.
@@ -6509,8 +6222,6 @@ This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
 
 =head4 Sample Error Message:
 
-    You need to give role or role_name or both
-
 =head1 Moose::Exception::NeitherTypeNorTypeNameIsGiven
 
 This class is a subclass of L<Moose::Exception>.
@@ -6537,8 +6248,6 @@ This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
 
 =head4 Sample Error Message:
 
-    You need to give type or type_name or both
-
 =head1 Moose::Exception::NoAttributeFoundInSuperClass
 
 This class is a subclass of L<Moose::Exception> and consume roles
@@ -6558,15 +6267,11 @@ L<Moose::Exception::Role::ParamsHash>.
 
 This attribute is read-only, isa Str and is required.
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->message >>
 
@@ -6680,15 +6385,12 @@ This attribute is read-only and isa Str. It is lazy and has a default value
 This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
  on $exception->message.
 
-=item B<< $exception->type >>
-
-This attribute is read-only, isa L<Moose::Meta::TypeConstraint>, has a predicate
- C<is_type_set> and is optional.
-
 =item B<< $exception->type_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_type_name_set> and is
- optional.
+This attribute can be used for fetching type
+constraint(Moose::Meta::TypeConstraint):
+    my $type_constraint =  Moose::Util::TypeConstraints::find_type_constraint(
+$exception->type_name );
 
 =back
 
@@ -6710,15 +6412,11 @@ L<Moose::Exception::Role::Class> and L<Moose::Exception::Role::ParamsHash>.
 
 =over 4
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->message >>
 
@@ -6754,15 +6452,11 @@ L<Moose::Exception::Role::Class> and L<Moose::Exception::Role::ParamsHash>.
 
 =over 4
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->message >>
 
@@ -6829,15 +6523,11 @@ L<Moose::Exception::Role::Class> and L<Moose::Exception::Role::ParamsHash>.
 
 =over 4
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->instance >>
 
@@ -6922,19 +6612,15 @@ This attribute is read-only and isa Str. It is lazy and has a default value
 
 This attribute is read-only, isa Str and is required.
 
-=item B<< $exception->role >>
-
-This attribute is read-only, isa L<Moose::Meta::Role>, has a predicate
-C<is_role_set> and is optional.
-
-=item B<< $exception->role_being_applied >>
+=item B<< $exception->role_being_applied_name >>
 
-This attribute is read-only, isa L<Moose::Meta::Role> and is required.
+This attribute is read-only, isa Str and is required.
 
 =item B<< $exception->role_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_role_name_set> and is
- optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->role_name );
+
 
 =item B<< $exception->trace >>
 
@@ -6980,12 +6666,11 @@ This attribute is read-only, isa Str and is required.
 This attribute is read-only, isa
 L<Moose::Meta::Role::Application::RoleSummation> and is required.
 
-=item B<< $exception->roles >>
+=item B<< $exception->role_names >>
 
-This attribute is read-only, isa ArrayRef[Moose::Meta::Role] and is required.
+This attribute is an ArrayRef containing role names, if you want metaobjects
+associated with these role names, then call method roles on the exception object.
 
-This attribute has handles as follows:
-    roles                    => elements
 
 =item B<< $exception->trace >>
 
@@ -7097,15 +6782,11 @@ L<Moose::Exception::Role::Class> and L<Moose::Exception::Role::ParamsHash>.
 
 =over 4
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->is_module >>
 
@@ -7155,15 +6836,13 @@ This attribute is read-only and isa Str. It is lazy and has a default value
 This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
  on $exception->message.
 
-=item B<< $exception->type >>
-
-This attribute is read-only, isa L<Moose::Meta::TypeConstraint>, has a predicate
- C<is_type_set> and is optional.
-
 =item B<< $exception->type_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_type_name_set> and is
- optional.
+This attribute can be used for fetching type
+constraint(Moose::Meta::TypeConstraint):
+    my $type_constraint =  Moose::Util::TypeConstraints::find_type_constraint(
+$exception->type_name );
+
 
 =item B<< $exception->type_parameter >>
 
@@ -7306,15 +6985,11 @@ L<Moose::Exception::Role::Class> and L<Moose::Exception::Role::Role>.
 
 =over 4
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->imported_method >>
 
@@ -7336,15 +7011,11 @@ This attribute has handles as follows:
     get_method_at            => get
     method_count             => count
 
-=item B<< $exception->role >>
-
-This attribute is read-only, isa L<Moose::Meta::Role>, has a predicate
-C<is_role_set> and is optional.
-
 =item B<< $exception->role_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_role_name_set> and is
- optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->role_name );
+
 
 =item B<< $exception->trace >>
 
@@ -7368,15 +7039,11 @@ L<Moose::Exception::Role::Class> and L<Moose::Exception::Role::Role>.
 
 =over 4
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->message >>
 
@@ -7393,15 +7060,11 @@ This attribute has handles as follows:
     get_method_at            => get
     method_count             => count
 
-=item B<< $exception->role >>
-
-This attribute is read-only, isa L<Moose::Meta::Role>, has a predicate
-C<is_role_set> and is optional.
-
 =item B<< $exception->role_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_role_name_set> and is
- optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->role_name );
+
 
 =item B<< $exception->trace >>
 
@@ -7428,28 +7091,24 @@ L<Moose::Exception::Role::Role>.
 
 =over 4
 
-=item B<< $exception->excluded_role >>
+=item B<< $exception->excluded_role_name >>
 
-This attribute is read-only, isa L<Moose::Meta::Role> and is required.
+This attribute is read-only, isa Str and is required.
 
 =item B<< $exception->message >>
 
 This attribute is read-only and isa Str. It is lazy and has a default value
 'Error'.
 
-=item B<< $exception->role >>
-
-This attribute is read-only, isa L<Moose::Meta::Role>, has a predicate
-C<is_role_set> and is optional.
-
 =item B<< $exception->role_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_role_name_set> and is
- optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->role_name );
+
 
-=item B<< $exception->second_role >>
+=item B<< $exception->second_role_name >>
 
-This attribute is read-only, isa L<Moose::Meta::Role> and is required.
+This attribute is read-only, isa Str and is required.
 
 =item B<< $exception->trace >>
 
@@ -7480,15 +7139,11 @@ L<Moose::Exception::Role::Role>.
 This attribute is read-only and isa Str. It is lazy and has a default value
 'Error'.
 
-=item B<< $exception->role >>
-
-This attribute is read-only, isa L<Moose::Meta::Role>, has a predicate
-C<is_role_set> and is optional.
-
 =item B<< $exception->role_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_role_name_set> and is
- optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->role_name );
+
 
 =item B<< $exception->roles >>
 
@@ -7519,15 +7174,11 @@ L<Moose::Exception::Role::Class>.
 
 =over 4
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->message >>
 
@@ -7563,51 +7214,11 @@ L<Moose::Exception::Role::Role>.
 This attribute is read-only and isa Str. It is lazy and has a default value
 'Error'.
 
-=item B<< $exception->role >>
-
-This attribute is read-only, isa L<Moose::Meta::Role>, has a predicate
-C<is_role_set> and is optional.
-
 =item B<< $exception->role_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_role_name_set> and is
- optional.
-
-=item B<< $exception->trace >>
-
-This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
- on $exception->message.
-
-=back
-
-=head4 Sample Error Message:
-
-    You must supply a role name to look for
-
-=head1 Moose::Exception::RoleNamesDoNotMatch
-
-This class is a subclass of L<Moose::Exception>.
-
-=over 4
-
-=back
-
-=head2 ATTRIBUTES
-
-=over 4
-
-=item B<< $exception->message >>
-
-This attribute is read-only and isa Str. It is lazy and has a default value
-'Error'.
-
-=item B<< $exception->role >>
-
-This attribute is read-only, isa L<Moose::Meta::Role> and is required.
-
-=item B<< $exception->role_name >>
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->role_name );
 
-This attribute is read-only, isa Str and is required.
 
 =item B<< $exception->trace >>
 
@@ -7618,7 +7229,7 @@ This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
 
 =head4 Sample Error Message:
 
-    role_name (Foo) does not match role->name (JustATestRole)
+    You must supply a role name to look for
 
 =head1 Moose::Exception::RolesDoNotSupportAugment
 
@@ -7726,15 +7337,11 @@ This attribute is read-only and isa Str. It is lazy and has a default value
 
 This attribute is read-only, isa Str and is required.
 
-=item B<< $exception->role >>
-
-This attribute is read-only, isa L<Moose::Meta::Role>, has a predicate
-C<is_role_set> and is optional.
-
 =item B<< $exception->role_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_role_name_set> and is
- optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->role_name );
+
 
 =item B<< $exception->trace >>
 
@@ -7905,20 +7512,25 @@ L<Moose::Exception::Role::TypeConstraint>.
 This attribute is read-only and isa Str. It is lazy and has a default value
 'Error'.
 
+=item B<< $exception->parent_type_name >>
+
+This attribute can be used for fetching type
+constraint(Moose::Meta::TypeConstraint):
+    my $type_constraint =  Moose::Util::TypeConstraints::find_type_constraint(
+$exception->parent_type_name );
+
+
 =item B<< $exception->trace >>
 
 This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
  on $exception->message.
 
-=item B<< $exception->type >>
-
-This attribute is read-only, isa L<Moose::Meta::TypeConstraint>, has a predicate
- C<is_type_set> and is optional.
-
 =item B<< $exception->type_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_type_name_set> and is
- optional.
+This attribute can be used for fetching type
+constraint(Moose::Meta::TypeConstraint):
+    my $type_constraint =  Moose::Util::TypeConstraints::find_type_constraint(
+$exception->type_name );
 
 =back
 
@@ -7954,15 +7566,12 @@ This attribute is read-only, isa Str and is required.
 This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
  on $exception->message.
 
-=item B<< $exception->type >>
-
-This attribute is read-only, isa L<Moose::Meta::TypeConstraint>, has a predicate
- C<is_type_set> and is optional.
-
 =item B<< $exception->type_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_type_name_set> and is
- optional.
+This attribute can be used for fetching type
+constraint(Moose::Meta::TypeConstraint):
+    my $type_constraint =  Moose::Util::TypeConstraints::find_type_constraint(
+$exception->type_name );
 
 =back
 
@@ -7975,42 +7584,6 @@ created again in main
     The type constraint 'Foo3' has already been created in Moose and cannot be
 created again in main
 
-=head1 Moose::Exception::TypeNamesDoNotMatch
-
-This class is a subclass of L<Moose::Exception>.
-
-=over 4
-
-=back
-
-=head2 ATTRIBUTES
-
-=over 4
-
-=item B<< $exception->message >>
-
-This attribute is read-only and isa Str. It is lazy and has a default value
-'Error'.
-
-=item B<< $exception->trace >>
-
-This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
- on $exception->message.
-
-=item B<< $exception->type >>
-
-This attribute is read-only, isa L<Moose::Meta::TypeConstraint> and is required.
-
-=item B<< $exception->type_name >>
-
-This attribute is read-only, isa Str and is required.
-
-=back
-
-=head4 Sample Error Message:
-
-    type_name (foo) does not match type->name (bar)
-
 =head1 Moose::Exception::TypeParameterMustBeMooseMetaType
 
 This class is a subclass of L<Moose::Exception> and consumes role
@@ -8034,15 +7607,12 @@ This attribute is read-only and isa Str. It is lazy and has a default value
 This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
  on $exception->message.
 
-=item B<< $exception->type >>
-
-This attribute is read-only, isa L<Moose::Meta::TypeConstraint>, has a predicate
- C<is_type_set> and is optional.
-
 =item B<< $exception->type_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_type_name_set> and is
- optional.
+This attribute can be used for fetching type
+constraint(Moose::Meta::TypeConstraint):
+    my $type_constraint =  Moose::Util::TypeConstraints::find_type_constraint(
+$exception->type_name );
 
 =back
 
@@ -8282,15 +7852,11 @@ L<Moose::Exception::Role::Class>.
 
 This attribute is read-only, isa Str and is required.
 
-=item B<< $exception->class >>
-
-This attribute is read-only, isa L<Class::MOP::Class>, has a predicate
-C<is_class_set> and is optional.
-
 =item B<< $exception->class_name >>
 
-This attribute is read-only, isa Str, has a predicate C<is_class_name_set> and
-is optional.
+This attribute can be used for fetching metaclass instance:
+    my $metaclass_instance = Moose::Util::find_meta( $exception->class_name );
+
 
 =item B<< $exception->message >>
 
@@ -8464,6 +8030,10 @@ This attribute is read-only and isa L<Devel::StackTrace>. It is lazy & dependent
 
     The type constraint for foo must be a subtype of ArrayRef but it's a Int
 
+
+
+=for comment insert generated content here
+
 =head1 AUTHORS
 
 =over 4
@@ -8517,4 +8087,4 @@ This software is copyright (c) 2006 by Infinity Interactive, Inc..
 This is free software; you can redistribute it and/or modify it under
 the same terms as the Perl 5 programming language system itself.
 
-=cut
+=cut
\ No newline at end of file
@@ -1,7 +1,4 @@
-package Moose::Manual::Exceptions;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Manual::Exceptions
 # ABSTRACT: Moose's exceptions
 
 __END__
@@ -16,7 +13,7 @@ Moose::Manual::Exceptions - Moose's exceptions
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 Exceptions in Moose
 
@@ -1,7 +1,4 @@
-package Moose::Manual::FAQ;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Manual::FAQ
 # ABSTRACT: Frequently asked questions about Moose
 
 __END__
@@ -16,7 +13,7 @@ Moose::Manual::FAQ - Frequently asked questions about Moose
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 FREQUENTLY ASKED QUESTIONS
 
@@ -1,7 +1,4 @@
-package Moose::Manual::MOP;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Manual::MOP
 # ABSTRACT: The Moose (and Class::MOP) meta API
 
 __END__
@@ -16,7 +13,7 @@ Moose::Manual::MOP - The Moose (and Class::MOP) meta API
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 INTRODUCTION
 
@@ -1,7 +1,4 @@
-package Moose::Manual::MethodModifiers;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Manual::MethodModifiers
 # ABSTRACT: Moose's method modifiers
 
 __END__
@@ -16,7 +13,7 @@ Moose::Manual::MethodModifiers - Moose's method modifiers
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 WHAT IS A METHOD MODIFIER?
 
@@ -1,7 +1,4 @@
-package Moose::Manual::MooseX;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Manual::MooseX
 # ABSTRACT: Recommended Moose extensions
 
 __END__
@@ -16,7 +13,7 @@ Moose::Manual::MooseX - Recommended Moose extensions
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 MooseX?
 
@@ -1,7 +1,4 @@
-package Moose::Manual::Roles;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Manual::Roles
 # ABSTRACT: Roles, an alternative to deep hierarchies and base classes
 
 __END__
@@ -16,7 +13,7 @@ Moose::Manual::Roles - Roles, an alternative to deep hierarchies and base classe
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 WHAT IS A ROLE?
 
@@ -1,7 +1,4 @@
-package Moose::Manual::Support;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Manual::Support
 # ABSTRACT: Policies regarding support, releases, and compatibility.
 
 __END__
@@ -16,7 +13,7 @@ Moose::Manual::Support - Policies regarding support, releases, and compatibility
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SUPPORT POLICY
 
@@ -121,13 +118,11 @@ http://www.perlmonks.org/?node_id=608144 >>).
 
 =head1 PERL VERSION COMPATIBILITY
 
-As of version 2.00, Moose officially supports being run on perl 5.8.3+. Our
+As of version 2.16, Moose will officially support being run on perl 5.10.1+. Our
 current policy is to support the earliest version of Perl shipped in the latest
 stable release of any major operating system (this tends to mean CentOS). We
 will provide at least six months notice (two major releases) when we decide to
-increase the officially supported Perl version. The next time this will happen
-is in January of 2012, when Moose 2.06 will increase the minimum officially
-supported Perl version to 5.10.1.
+increase the officially supported Perl version.
 
 "Officially supported" does not mean that these are the only versions of Perl
 that Moose will work with. Our declared perl dependency will remain at 5.8.3 as
@@ -137,12 +132,16 @@ that aren't officially supported, and new contributions will not be rejected
 due to being incompatible with older versions of perl except in the most
 trivial of cases. We will, however, still welcome patches to make Moose
 compatible with earlier versions, if other people are still interested in
-maintaining compatibility. Note that although performance regressions are
-acceptable in order to maintain backwards compatibility (as long as they only
-affect the older versions), functionality changes and buggy behavior will not
-be. If it becomes impossible to provide identical functionality between modern
-Perl versions and unsupported Perl versions, we will increase our declared perl
-dependency instead.
+maintaining compatibility. As such, the current minimum required version 
+of 5.8.3 will remain for as long as downstream users are happy 
+to assist with maintenance.
+
+Note that although performance regressions are acceptable in order to maintain 
+backwards compatibility (as long as they only affect the older versions), 
+functionality changes and buggy behavior will not be. If it becomes 
+impossible to provide identical functionality between modern Perl versions 
+and unsupported Perl versions, we will increase our declared perl dependency 
+instead.
 
 =head1 CONTRIBUTING
 
@@ -1,7 +1,4 @@
-package Moose::Manual::Types;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Manual::Types
 # ABSTRACT: Moose's type system
 
 __END__
@@ -16,7 +13,7 @@ Moose::Manual::Types - Moose's type system
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 TYPES IN PERL?
 
@@ -1,7 +1,4 @@
-package Moose::Manual::Unsweetened;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Manual::Unsweetened
 # ABSTRACT: Moose idioms in plain old Perl 5 without the sugar
 
 __END__
@@ -16,7 +13,7 @@ Moose::Manual::Unsweetened - Moose idioms in plain old Perl 5 without the sugar
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -1,7 +1,4 @@
-package Moose::Manual;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Manual
 # ABSTRACT: What is Moose, and how do I use it?
 
 __END__
@@ -16,7 +13,7 @@ Moose::Manual - What is Moose, and how do I use it?
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 WHAT IS MOOSE?
 
@@ -2,7 +2,7 @@ package Moose::Meta::Attribute::Native::Trait::Array;
 BEGIN {
   $Moose::Meta::Attribute::Native::Trait::Array::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Attribute::Native::Trait::Array::VERSION = '2.1204';
+$Moose::Meta::Attribute::Native::Trait::Array::VERSION = '2.1210';
 use Moose::Role;
 with 'Moose::Meta::Attribute::Native::Trait';
 
@@ -26,7 +26,7 @@ Moose::Meta::Attribute::Native::Trait::Array - Helper trait for ArrayRef attribu
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -2,7 +2,7 @@ package Moose::Meta::Attribute::Native::Trait::Bool;
 BEGIN {
   $Moose::Meta::Attribute::Native::Trait::Bool::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Attribute::Native::Trait::Bool::VERSION = '2.1204';
+$Moose::Meta::Attribute::Native::Trait::Bool::VERSION = '2.1210';
 use Moose::Role;
 with 'Moose::Meta::Attribute::Native::Trait';
 
@@ -26,7 +26,7 @@ Moose::Meta::Attribute::Native::Trait::Bool - Helper trait for Bool attributes
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -2,7 +2,7 @@ package Moose::Meta::Attribute::Native::Trait::Code;
 BEGIN {
   $Moose::Meta::Attribute::Native::Trait::Code::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Attribute::Native::Trait::Code::VERSION = '2.1204';
+$Moose::Meta::Attribute::Native::Trait::Code::VERSION = '2.1210';
 use Moose::Role;
 with 'Moose::Meta::Attribute::Native::Trait';
 
@@ -26,7 +26,7 @@ Moose::Meta::Attribute::Native::Trait::Code - Helper trait for CodeRef attribute
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -2,7 +2,7 @@ package Moose::Meta::Attribute::Native::Trait::Counter;
 BEGIN {
   $Moose::Meta::Attribute::Native::Trait::Counter::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Attribute::Native::Trait::Counter::VERSION = '2.1204';
+$Moose::Meta::Attribute::Native::Trait::Counter::VERSION = '2.1210';
 use Moose::Role;
 with 'Moose::Meta::Attribute::Native::Trait';
 
@@ -27,7 +27,7 @@ Moose::Meta::Attribute::Native::Trait::Counter - Helper trait for Int attributes
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -2,7 +2,7 @@ package Moose::Meta::Attribute::Native::Trait::Hash;
 BEGIN {
   $Moose::Meta::Attribute::Native::Trait::Hash::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Attribute::Native::Trait::Hash::VERSION = '2.1204';
+$Moose::Meta::Attribute::Native::Trait::Hash::VERSION = '2.1210';
 use Moose::Role;
 with 'Moose::Meta::Attribute::Native::Trait';
 
@@ -26,7 +26,7 @@ Moose::Meta::Attribute::Native::Trait::Hash - Helper trait for HashRef attribute
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -128,7 +128,7 @@ This method does not accept any arguments.
 
 =item B<count>
 
-Returns the number of elements in the hash. Also useful for not empty:
+Returns the number of elements in the hash. Also useful to check for a nonempty hash, because C<count> returns a true (nonzero) value if there is something in the hash:
 C<< has_options => 'count' >>.
 
 This method does not accept any arguments.
@@ -2,7 +2,7 @@ package Moose::Meta::Attribute::Native::Trait::Number;
 BEGIN {
   $Moose::Meta::Attribute::Native::Trait::Number::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Attribute::Native::Trait::Number::VERSION = '2.1204';
+$Moose::Meta::Attribute::Native::Trait::Number::VERSION = '2.1210';
 use Moose::Role;
 with 'Moose::Meta::Attribute::Native::Trait';
 
@@ -26,7 +26,7 @@ Moose::Meta::Attribute::Native::Trait::Number - Helper trait for Num attributes
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -2,7 +2,7 @@ package Moose::Meta::Attribute::Native::Trait::String;
 BEGIN {
   $Moose::Meta::Attribute::Native::Trait::String::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Attribute::Native::Trait::String::VERSION = '2.1204';
+$Moose::Meta::Attribute::Native::Trait::String::VERSION = '2.1210';
 use Moose::Role;
 with 'Moose::Meta::Attribute::Native::Trait';
 
@@ -26,7 +26,7 @@ Moose::Meta::Attribute::Native::Trait::String - Helper trait for Str attributes
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -2,7 +2,7 @@ package Moose::Meta::Attribute::Native::Trait;
 BEGIN {
   $Moose::Meta::Attribute::Native::Trait::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Attribute::Native::Trait::VERSION = '2.1204';
+$Moose::Meta::Attribute::Native::Trait::VERSION = '2.1210';
 use Moose::Role;
 use Module::Runtime 'require_module';
 use List::MoreUtils qw( any uniq );
@@ -31,11 +31,9 @@ sub _check_helper_type {
     my $isa;
     my $isa_name;
 
-    if (
-        Moose::Util::does_role(
-            $options->{isa}, 'Specio::Constraint::Role::Interface'
-        )
-        ) {
+    if (   blessed( $options->{isa} )
+        && $options->{isa}->can('does')
+        && $options->{isa}->does('Specio::Constraint::Role::Interface') ) {
 
         $isa = $options->{isa};
         require Specio::Library::Builtins;
@@ -184,7 +182,7 @@ Moose::Meta::Attribute::Native::Trait - Shared role for native delegation traits
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 BUGS
 
@@ -4,7 +4,7 @@ package Moose::Meta::Attribute::Native;
 BEGIN {
   $Moose::Meta::Attribute::Native::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Attribute::Native::VERSION = '2.1204';
+$Moose::Meta::Attribute::Native::VERSION = '2.1210';
 use Module::Runtime 'require_module';
 
 my @trait_names = qw(Bool Counter Number String Array Hash Code);
@@ -44,7 +44,7 @@ Moose::Meta::Attribute::Native - Delegate to native Perl types
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -4,7 +4,7 @@ package Moose::Meta::Attribute;
 BEGIN {
   $Moose::Meta::Attribute::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Attribute::VERSION = '2.1204';
+$Moose::Meta::Attribute::VERSION = '2.1210';
 use B ();
 use Scalar::Util 'blessed', 'weaken';
 use List::MoreUtils 'any';
@@ -44,8 +44,8 @@ sub does {
 }
 
 sub _inline_throw_exception {
-    my ( $self, $throw_args ) = @_;
-    return 'require Moose::Util; Moose::Util::throw_exception('.$throw_args.')';
+    my ( $self, $exception_type, $throw_args ) = @_;
+    return 'die Module::Runtime::use_module("Moose::Exception::' . $exception_type . '")->new(' . ($throw_args || '') . ')';
 }
 
 sub new {
@@ -338,9 +338,8 @@ sub _process_isa_option {
     }
     elsif (
         blessed( $options->{isa} )
-        && Moose::Util::does_role(
-            $options->{isa}, 'Specio::Constraint::Role::Interface'
-        )
+        && $options->{isa}->can('does')
+        && $options->{isa}->does('Specio::Constraint::Role::Interface')
         ) {
         $options->{type_constraint} = $options->{isa};
     }
@@ -491,9 +490,10 @@ sub initialize_instance_slot {
         # skip it if it's lazy
         return if $self->is_lazy;
         # and die if it's required and doesn't have a default value
-        throw_exception(AttributeIsRequired => attribute  => $self,
-                                               class_name => blessed( $instance ),
-                                               params     => $params
+        my $class_name = blessed( $instance );
+        throw_exception(AttributeIsRequired => attribute_name => $self->name,
+                                               class_name     => $class_name,
+                                               params         => $params,
                        )
             if $self->is_required && !$self->has_default && !$self->has_builder;
 
@@ -550,9 +550,10 @@ sub set_value {
 
     my $attr_name = quotemeta($self->name);
 
+    my $class_name = blessed( $instance );
     if ($self->is_required and not @args) {
-        throw_exception( AttributeIsRequired => attribute  => $self,
-                                                class_name => blessed( $instance ),
+        throw_exception( AttributeIsRequired => attribute_name => $self->name,
+                                                class_name     => $class_name,
                        );
     }
 
@@ -633,7 +634,7 @@ sub _inline_check_required {
 
     return (
         'if (@_ < 2) {',
-            $self->_inline_throw_exception( "AttributeIsRequired => ".
+            $self->_inline_throw_exception( AttributeIsRequired =>
                                             'attribute_name      => "'.$attr_name.'",'.
                                             'class_name          => $class_name'
             ) . ';',
@@ -690,7 +691,7 @@ sub _inline_check_constraint {
                 'my $msg = do { local $_ = ' . $value . '; '
                 . $message . '->(' . $value . ');'
                 . '};'.
-                $self->_inline_throw_exception( 'ValidationFailedForInlineTypeConstraint => '.
+                $self->_inline_throw_exception( ValidationFailedForInlineTypeConstraint =>
                                                 'type_constraint_message => $msg , '.
                                                 'class_name              => $class_name, '.
                                                 'attribute_name          => "'.$attr_name.'",'.
@@ -705,7 +706,7 @@ sub _inline_check_constraint {
                 'my $msg = do { local $_ = ' . $value . '; '
                 . $message . '->(' . $value . ');'
                 . '};'.
-                $self->_inline_throw_exception( 'ValidationFailedForInlineTypeConstraint => '.
+                $self->_inline_throw_exception( ValidationFailedForInlineTypeConstraint =>
                                                 'type_constraint_message => $msg , '.
                                                 'class_name              => $class_name, '.
                                                 'attribute_name          => "'.$attr_name.'",'.
@@ -837,7 +838,7 @@ sub get_value {
             return wantarray ? %{ $rv } : $rv;
         }
         else {
-            throw_exception( CannotAutoDereferenceTypeConstraint => type      => $type_constraint,
+            throw_exception( CannotAutoDereferenceTypeConstraint => type_name => $type_constraint->name,
                                                                     instance  => $instance,
                                                                     attribute => $self
                            );
@@ -924,7 +925,7 @@ sub _inline_generate_default {
             'else {',
                 'my $class = ref(' . $instance . ') || ' . $instance . ';',
                 $self->_inline_throw_exception(
-                    "BuilderMethodNotSupportedForInlineAttribute => ".
+                    BuilderMethodNotSupportedForInlineAttribute =>
                     'class_name     => $class,'.
                     'attribute_name => "'.$attr_name_str.'",'.
                     'instance       => '.$instance.','.
@@ -1275,7 +1276,7 @@ package Moose::Meta::Attribute::Custom::Moose;
 BEGIN {
   $Moose::Meta::Attribute::Custom::Moose::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Attribute::Custom::Moose::VERSION = '2.1204';
+$Moose::Meta::Attribute::Custom::Moose::VERSION = '2.1210';
 sub register_implementation { 'Moose::Meta::Attribute' }
 1;
 
@@ -1293,7 +1294,7 @@ Moose::Meta::Attribute - The Moose attribute metaclass
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -2,7 +2,7 @@ package Moose::Meta::Class::Immutable::Trait;
 BEGIN {
   $Moose::Meta::Class::Immutable::Trait::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Class::Immutable::Trait::VERSION = '2.1204';
+$Moose::Meta::Class::Immutable::Trait::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -33,7 +33,7 @@ sub does_role {
     my $role = shift;
 
     (defined $role)
-        || throw_exception( RoleNameRequired => class => $self );
+        || throw_exception( RoleNameRequired => class_name => $self->name );
 
     $self->{__immutable}{does_role} ||= { map { $_->name => 1 } $self->calculate_all_roles_with_inheritance };
 
@@ -58,7 +58,7 @@ Moose::Meta::Class::Immutable::Trait - Implements immutability for metaclass obj
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,8 @@
-
 package Moose::Meta::Class;
 BEGIN {
   $Moose::Meta::Class::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Class::VERSION = '2.1204';
+$Moose::Meta::Class::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -184,7 +183,7 @@ sub add_role {
     my ($self, $role) = @_;
     (blessed($role) && $role->isa('Moose::Meta::Role'))
         || throw_exception( AddRoleTakesAMooseMetaRoleInstance => role_to_be_added => $role,
-                                                                  class            => $self
+                                                                  class_name       => $self->name,
                           );
     push @{$self->roles} => $role;
 }
@@ -199,7 +198,7 @@ sub add_role_application {
     my ($self, $application) = @_;
 
     (blessed($application) && $application->isa('Moose::Meta::Role::Application::ToClass'))
-        || throw_exception( InvalidRoleApplication => class       => $self,
+        || throw_exception( InvalidRoleApplication => class_name  => $self->name,
                                                       application => $application,
                           );
 
@@ -236,7 +235,7 @@ sub does_role {
     my ($self, $role_name) = @_;
 
     (defined $role_name)
-        || throw_exception( RoleNameRequired => class => $self );
+        || throw_exception( RoleNameRequired => class_name => $self->name );
 
     foreach my $class ($self->class_precedence_list) {
         my $meta = Class::MOP::class_of($class);
@@ -256,7 +255,7 @@ sub excludes_role {
     my ($self, $role_name) = @_;
 
     (defined $role_name)
-        || throw_exception( RoleNameRequired => class => $self );
+        || throw_exception( RoleNameRequired => class_name => $self->name );
 
     foreach my $class ($self->class_precedence_list) {
         my $meta = Class::MOP::class_of($class);
@@ -336,7 +335,7 @@ sub _inline_BUILDARGS {
                 'if (scalar @_ == 1) {',
                     'if (!defined($_[0]) || ref($_[0]) ne \'HASH\') {',
                         $self->_inline_throw_exception(
-                            '"SingleParamsToNewMustBeHashRef"'
+                            'SingleParamsToNewMustBeHashRef'
                         ) . ';',
                     '}',
                     '$params = { %{ $_[0] } };',
@@ -383,7 +382,7 @@ sub _inline_check_required_attr {
     return (
         'if (!exists $params->{\'' . $attr->init_arg . '\'}) {',
             $self->_inline_throw_exception(
-                'AttributeIsRequired => '.
+                AttributeIsRequired =>
                 'params         => $params, '.
                 'class_name     => $class_name, '.
                 'attribute_name => "'.quotemeta($attr->name).'"'
@@ -560,7 +559,7 @@ sub superclasses {
         my ($name, $opts) = @{ $super };
         Moose::Util::_load_user_class($name, $opts);
         my $meta = Class::MOP::class_of($name);
-        throw_exception( CanExtendOnlyClasses => role => $meta )
+        throw_exception( CanExtendOnlyClasses => role_name => $meta->name )
             if $meta && $meta->isa('Moose::Meta::Role')
     }
     return $self->SUPER::superclasses(map { $_->[0] } @{ $supers });
@@ -588,8 +587,8 @@ sub add_override_method_modifier {
 
     my $existing_method = $self->get_method($name);
     (!$existing_method)
-        || throw_exception( CannotOverrideLocalMethodIsPresent => class  => $self,
-                                                                  method => $existing_method,
+        || throw_exception( CannotOverrideLocalMethodIsPresent => class_name => $self->name,
+                                                                  method     => $existing_method,
                           );
     $self->add_method($name => Moose::Meta::Method::Overridden->new(
         method  => $method,
@@ -602,8 +601,8 @@ sub add_override_method_modifier {
 sub add_augment_method_modifier {
     my ($self, $name, $method) = @_;
     my $existing_method = $self->get_method($name);
-    throw_exception( CannotAugmentIfLocalMethodPresent => class  => $self,
-                                                          method => $existing_method,
+    throw_exception( CannotAugmentIfLocalMethodPresent => class_name => $self->name,
+                                                          method     => $existing_method,
                    )
         if( $existing_method );
 
@@ -721,7 +720,7 @@ sub _process_inherited_attribute {
 
     my $inherited_attr = $self->find_attribute_by_name($attr_name);
     (defined $inherited_attr)
-        || throw_exception( NoAttributeFoundInSuperClass => class          => $self,
+        || throw_exception( NoAttributeFoundInSuperClass => class_name     => $self->name,
                                                             attribute_name => $attr_name,
                                                             params         => \%options
                           );
@@ -786,8 +785,8 @@ sub _fixup_attributes_after_rebless {
 our $error_level;
 
 sub _inline_throw_exception {
-    my ( $self, $throw_args ) = @_;
-    return 'Moose::Util::throw_exception('.$throw_args.')';
+    my ( $self, $exception_type, $throw_args ) = @_;
+    return 'die Module::Runtime::use_module("Moose::Exception::' . $exception_type . '")->new(' . ($throw_args || '') . ')';
 }
 
 1;
@@ -806,7 +805,7 @@ Moose::Meta::Class - The Moose metaclass
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,8 @@
-
 package Moose::Meta::Instance;
 BEGIN {
   $Moose::Meta::Instance::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Instance::VERSION = '2.1204';
+$Moose::Meta::Instance::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -29,7 +28,7 @@ Moose::Meta::Instance - The Moose Instance metaclass
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Array::Writer;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Array::Writer::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Array::Writer::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Array::Writer::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Array::accessor;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Array::accessor::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Array::accessor::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Array::accessor::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Array::clear;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Array::clear::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Array::clear::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Array::clear::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Array::count;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Array::count::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Array::count::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Array::count::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Array::delete;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Array::delete::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Array::delete::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Array::delete::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Array::elements;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Array::elements::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Array::elements::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Array::elements::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Array::first;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Array::first::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Array::first::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Array::first::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -22,7 +22,7 @@ sub _inline_check_arguments {
 
     return (
         'if (!Params::Util::_CODELIKE($_[0])) {',
-            $self->_inline_throw_exception( "InvalidArgumentToMethod => ".
+            $self->_inline_throw_exception( InvalidArgumentToMethod =>
                                             'argument                => $_[0],'.
                                             'method_name             => "first",'.
                                             'type_of_argument        => "code reference",'.
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Array::first_index;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Array::first_index::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Array::first_index::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Array::first_index::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -22,7 +22,7 @@ sub _inline_check_arguments {
 
     return (
         'if (!Params::Util::_CODELIKE($_[0])) {',
-            $self->_inline_throw_exception( "InvalidArgumentToMethod => ".
+            $self->_inline_throw_exception( InvalidArgumentToMethod =>
                                             'argument                => $_[0],'.
                                             'method_name             => "first_index",'.
                                             'type_of_argument        => "code reference",'.
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Array::get;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Array::get::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Array::get::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Array::get::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Array::grep;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Array::grep::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Array::grep::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Array::grep::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -21,7 +21,7 @@ sub _inline_check_arguments {
 
     return (
         'if (!Params::Util::_CODELIKE($_[0])) {',
-            $self->_inline_throw_exception( "InvalidArgumentToMethod => ".
+            $self->_inline_throw_exception( InvalidArgumentToMethod =>
                                             'argument                => $_[0],'.
                                             'method_name             => "grep",'.
                                             'type_of_argument        => "code reference",'.
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Array::insert;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Array::insert::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Array::insert::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Array::insert::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Array::is_empty;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Array::is_empty::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Array::is_empty::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Array::is_empty::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Array::join;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Array::join::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Array::join::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Array::join::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -21,7 +21,7 @@ sub _inline_check_arguments {
 
     return (
         'if (!Moose::Util::_STRINGLIKE0($_[0])) {',
-            $self->_inline_throw_exception( "InvalidArgumentToMethod => ".
+            $self->_inline_throw_exception( InvalidArgumentToMethod =>
                                             'argument                => $_[0],'.
                                             'method_name             => "join",'.
                                             'type_of_argument        => "string",'.
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Array::map;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Array::map::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Array::map::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Array::map::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -21,7 +21,7 @@ sub _inline_check_arguments {
 
     return (
         'if (!Params::Util::_CODELIKE($_[0])) {',
-            $self->_inline_throw_exception( "InvalidArgumentToMethod => ".
+            $self->_inline_throw_exception( InvalidArgumentToMethod =>
                                             'argument                => $_[0],'.
                                             'method_name             => "map",'.
                                             'type_of_argument        => "code reference",'.
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Array::natatime;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Array::natatime::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Array::natatime::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Array::natatime::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -22,7 +22,7 @@ sub _inline_check_arguments {
 
     return (
         'if (!defined($_[0]) || $_[0] !~ /^\d+$/) {',
-            $self->_inline_throw_exception( "InvalidArgumentToMethod => ".
+            $self->_inline_throw_exception( InvalidArgumentToMethod =>
                                             'argument                => $_[0],'.
                                             'method_name             => "natatime",'.
                                             'type_of_argument        => "integer",'.
@@ -31,7 +31,7 @@ sub _inline_check_arguments {
             ) . ';',
         '}',
         'if (@_ == 2 && !Params::Util::_CODELIKE($_[1])) {',
-            $self->_inline_throw_exception( "InvalidArgumentToMethod => ".
+            $self->_inline_throw_exception( InvalidArgumentToMethod =>
                                             'argument                => $_[1],'.
                                             'method_name             => "natatime",'.
                                             'type_of_argument        => "code reference",'.
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Array::pop;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Array::pop::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Array::pop::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Array::pop::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Array::push;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Array::push::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Array::push::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Array::push::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Array::reduce;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Array::reduce::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Array::reduce::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Array::reduce::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -22,7 +22,7 @@ sub _inline_check_arguments {
 
     return (
         'if (!Params::Util::_CODELIKE($_[0])) {',
-            $self->_inline_throw_exception( "InvalidArgumentToMethod => ".
+            $self->_inline_throw_exception( InvalidArgumentToMethod =>
                                             'argument                => $_[0],'.
                                             'method_name             => "reduce",'.
                                             'type_of_argument        => "code reference",'.
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Array::set;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Array::set::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Array::set::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Array::set::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Array::shallow_clone;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Array::shallow_clone::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Array::shallow_clone::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Array::shallow_clone::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Array::shift;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Array::shift::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Array::shift::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Array::shift::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Array::shuffle;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Array::shuffle::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Array::shuffle::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Array::shuffle::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Array::sort;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Array::sort::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Array::sort::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Array::sort::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -19,7 +19,7 @@ sub _inline_check_arguments {
 
     return (
         'if (@_ && !Params::Util::_CODELIKE($_[0])) {',
-            $self->_inline_throw_exception( "InvalidArgumentToMethod => ".
+            $self->_inline_throw_exception( InvalidArgumentToMethod =>
                                             'argument                => $_[0],'.
                                             'method_name             => "sort",'.
                                             'type_of_argument        => "code reference",'.
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Array::sort_in_place;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Array::sort_in_place::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Array::sort_in_place::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Array::sort_in_place::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -19,7 +19,7 @@ sub _inline_check_arguments {
 
     return (
         'if (@_ && !Params::Util::_CODELIKE($_[0])) {',
-            $self->_inline_throw_exception( "InvalidArgumentToMethod => ".
+            $self->_inline_throw_exception( InvalidArgumentToMethod =>
                                             'argument                => $_[0],'.
                                             'method_name             => "sort_in_place",'.
                                             'type_of_argument        => "code reference",'.
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Array::splice;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Array::splice::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Array::splice::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Array::splice::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -27,7 +27,7 @@ sub _inline_check_arguments {
     return (
         $self->_inline_check_var_is_valid_index('$idx'),
         'if (defined($len) && $len !~ /^-?\d+$/) {',
-            $self->_inline_throw_exception( "InvalidArgumentToMethod => ".
+            $self->_inline_throw_exception( InvalidArgumentToMethod =>
                                             'argument                => $len,'.
                                             'method_name             => "splice",'.
                                             'type_of_argument        => "integer",'.
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Array::uniq;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Array::uniq::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Array::uniq::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Array::uniq::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Array::unshift;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Array::unshift::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Array::unshift::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Array::unshift::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Array;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Array::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Array::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Array::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -16,7 +16,7 @@ sub _inline_check_var_is_valid_index {
 
     return (
         'if (!defined(' . $var . ') || ' . $var . ' !~ /^-?\d+$/) {',
-            $self->_inline_throw_exception( "InvalidArgumentToMethod => ".
+            $self->_inline_throw_exception( InvalidArgumentToMethod =>
                                             'argument                => '.$var.','.
                                             'method_name             => "'.$self->delegate_to_method.'",'.
                                             'type_of_argument        => "integer",'.
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Bool::not;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Bool::not::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Bool::not::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Bool::not::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Bool::set;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Bool::set::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Bool::set::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Bool::set::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Bool::toggle;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Bool::toggle::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Bool::toggle::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Bool::toggle::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Bool::unset;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Bool::unset::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Bool::unset::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Bool::unset::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Code::execute;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Code::execute::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Code::execute::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Code::execute::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Code::execute_method;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Code::execute_method::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Code::execute_method::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Code::execute_method::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Collection;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Collection::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Collection::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Collection::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -111,7 +111,7 @@ sub _inline_check_member_constraint {
         'for my $new_val (' . $new_value . ') {',
             "if ($check) {",
                 'my $msg = do { local $_ = $new_val; $member_message->($new_val) };'.
-                $self->_inline_throw_exception( "ValidationFailedForInlineTypeConstraint => ".
+                $self->_inline_throw_exception( ValidationFailedForInlineTypeConstraint =>
                                                 "attribute_name          => '".$attr_name."',".
                                                 'type_constraint_message => $msg,'.
                                                 'class_name              => $class_name,'.
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Counter::Writer;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Counter::Writer::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Counter::Writer::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Counter::Writer::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Counter::dec;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Counter::dec::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Counter::dec::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Counter::dec::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Counter::inc;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Counter::inc::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Counter::inc::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Counter::inc::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Counter::reset;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Counter::reset::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Counter::reset::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Counter::reset::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Counter::set;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Counter::set::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Counter::set::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Counter::set::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Hash::Writer;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Hash::Writer::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Hash::Writer::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Hash::Writer::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Hash::accessor;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Hash::accessor::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Hash::accessor::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Hash::accessor::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Hash::clear;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Hash::clear::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Hash::clear::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Hash::clear::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Hash::count;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Hash::count::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Hash::count::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Hash::count::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Hash::defined;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Hash::defined::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Hash::defined::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Hash::defined::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Hash::delete;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Hash::delete::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Hash::delete::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Hash::delete::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Hash::elements;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Hash::elements::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Hash::elements::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Hash::elements::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Hash::exists;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Hash::exists::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Hash::exists::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Hash::exists::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Hash::get;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Hash::get::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Hash::get::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Hash::get::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Hash::is_empty;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Hash::is_empty::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Hash::is_empty::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Hash::is_empty::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Hash::keys;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Hash::keys::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Hash::keys::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Hash::keys::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Hash::kv;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Hash::kv::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Hash::kv::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Hash::kv::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Hash::set;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Hash::set::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Hash::set::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Hash::set::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -24,7 +24,7 @@ around _inline_check_argument_count => sub {
     return (
         $self->$orig(@_),
         'if (@_ % 2) {',
-            $self->_inline_throw_exception( "MustPassEvenNumberOfArguments => ".
+            $self->_inline_throw_exception( MustPassEvenNumberOfArguments =>
                                             "method_name => '".$self->delegate_to_method."',".
                                             'args        => \@_',
             ) . ';',
@@ -47,7 +47,7 @@ sub _inline_check_arguments {
     return (
         'for (@keys_idx) {',
             'if (!defined($_[$_])) {',
-                $self->_inline_throw_exception( "UndefinedHashKeysPassedToMethod => ".
+                $self->_inline_throw_exception( UndefinedHashKeysPassedToMethod =>
                                                 'hash_keys                       => \@keys_idx,'.
                                                 "method_name                     => '".$self->delegate_to_method."'",
                 ) . ';',
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Hash::shallow_clone;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Hash::shallow_clone::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Hash::shallow_clone::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Hash::shallow_clone::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Hash::values;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Hash::values::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Hash::values::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Hash::values::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Hash;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Hash::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Hash::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Hash::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -14,7 +14,7 @@ sub _inline_check_var_is_valid_key {
 
     return (
         'if (!defined(' . $var . ')) {',
-            $self->_inline_throw_exception( "InvalidArgumentToMethod => ".
+            $self->_inline_throw_exception( InvalidArgumentToMethod =>
                                             'argument                => '.$var.','.
                                             'method_name             => "'.$self->delegate_to_method.'",'.
                                             'type_of_argument        => "defined value",'.
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Number::abs;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Number::abs::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Number::abs::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Number::abs::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Number::add;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Number::add::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Number::add::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Number::add::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Number::div;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Number::div::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Number::div::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Number::div::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Number::mod;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Number::mod::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Number::mod::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Number::mod::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Number::mul;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Number::mul::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Number::mul::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Number::mul::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Number::set;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Number::set::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Number::set::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Number::set::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Number::sub;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Number::sub::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Number::sub::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Number::sub::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Reader;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Reader::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Reader::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Reader::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::String::append;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::String::append::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::String::append::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::String::append::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::String::chomp;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::String::chomp::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::String::chomp::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::String::chomp::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::String::chop;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::String::chop::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::String::chop::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::String::chop::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::String::clear;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::String::clear::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::String::clear::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::String::clear::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::String::inc;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::String::inc::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::String::inc::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::String::inc::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::String::length;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::String::length::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::String::length::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::String::length::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::String::match;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::String::match::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::String::match::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::String::match::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -22,7 +22,7 @@ sub _inline_check_arguments {
 
     return (
         'if (!Moose::Util::_STRINGLIKE0($_[0]) && !Params::Util::_REGEX($_[0])) {',
-            $self->_inline_throw_exception( "InvalidArgumentToMethod => ".
+            $self->_inline_throw_exception( InvalidArgumentToMethod =>
                                             'argument                => $_[0],'.
                                             'type                    => "Str|RegexpRef",'.
                                             'type_of_argument        => "string or regexp reference",'.
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::String::prepend;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::String::prepend::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::String::prepend::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::String::prepend::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::String::replace;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::String::replace::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::String::replace::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::String::replace::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -22,7 +22,7 @@ sub _inline_check_arguments {
 
     return (
         'if (!Moose::Util::_STRINGLIKE0($_[0]) && !Params::Util::_REGEX($_[0])) {',
-            $self->_inline_throw_exception( "InvalidArgumentToMethod => ".
+            $self->_inline_throw_exception( InvalidArgumentToMethod =>
                                             'argument                => $_[0],'.
                                             'method_name             => "replace",'.
                                             'ordinal                 => "first",'.
@@ -31,7 +31,7 @@ sub _inline_check_arguments {
             ) . ';',
         '}',
         'if (!Moose::Util::_STRINGLIKE0($_[1]) && !Params::Util::_CODELIKE($_[1])) {',
-            $self->_inline_throw_exception( "InvalidArgumentToMethod => ".
+            $self->_inline_throw_exception( InvalidArgumentToMethod =>
                                             'argument                => $_[1],'.
                                             'method_name             => "replace",'.
                                             'ordinal                 => "second",'.
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::String::substr;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::String::substr::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::String::substr::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::String::substr::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -56,7 +56,7 @@ sub _inline_check_arguments {
 
     my @code = (
         'if ($offset !~ /^-?\d+$/) {',
-            $self->_inline_throw_exception( "InvalidArgumentToMethod => ".
+            $self->_inline_throw_exception( InvalidArgumentToMethod =>
                                             'argument                => $offset,'.
                                             'ordinal                 => "first",'.
                                             'type_of_argument        => "integer",'.
@@ -65,7 +65,7 @@ sub _inline_check_arguments {
             ) . ';',
         '}',
         'if ($length !~ /^-?\d+$/) {',
-            $self->_inline_throw_exception( "InvalidArgumentToMethod => ".
+            $self->_inline_throw_exception( InvalidArgumentToMethod =>
                                             'argument                => $length,'.
                                             'ordinal                 => "second",'.
                                             'type_of_argument        => "integer",'.
@@ -78,7 +78,7 @@ sub _inline_check_arguments {
     if ($for_writer) {
         push @code, (
             'if (!Moose::Util::_STRINGLIKE0($replacement)) {',
-                $self->_inline_throw_exception( "InvalidArgumentToMethod => ".
+                $self->_inline_throw_exception( InvalidArgumentToMethod =>
                                                 'argument                => $replacement,'.
                                                 'ordinal                 => "third",'.
                                                 'type_of_argument        => "string",'.
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native::Writer;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::Writer::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::Writer::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::Writer::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -91,8 +91,9 @@ sub _is_root_type {
     my $self = shift;
     my $type = shift;
 
-    if (
-        Moose::Util::does_role( $type, 'Specio::Constraint::Role::Interface' ) )
+    if (   blessed($type)
+        && $type->can('does')
+        && $type->does('Specio::Constraint::Role::Interface') )
     {
         require Specio::Library::Builtins;
         return
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Accessor::Native;
 BEGIN {
   $Moose::Meta::Method::Accessor::Native::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::Native::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::Native::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -76,7 +76,7 @@ sub _inline_check_argument_count {
     if (my $min = $self->_minimum_arguments) {
         push @code, (
             'if (@_ < ' . $min . ') {',
-                $self->_inline_throw_exception( "MethodExpectsMoreArgs => ".
+                $self->_inline_throw_exception( MethodExpectsMoreArgs =>
                                                 'method_name           => "'.$self->delegate_to_method.'",'.
                                                 "minimum_args          => ".$min,
                 ) . ';',
@@ -87,7 +87,7 @@ sub _inline_check_argument_count {
     if (defined(my $max = $self->_maximum_arguments)) {
         push @code, (
             'if (@_ > ' . $max . ') {',
-                $self->_inline_throw_exception( "MethodExpectsFewerArgs => ".
+                $self->_inline_throw_exception( MethodExpectsFewerArgs =>
                                                 'method_name            => "'.$self->delegate_to_method.'",'.
                                                 'maximum_args           => '.$max,
                 ) . ';',
@@ -1,9 +1,8 @@
-
 package Moose::Meta::Method::Accessor;
 BEGIN {
   $Moose::Meta::Method::Accessor::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Accessor::VERSION = '2.1204';
+$Moose::Meta::Method::Accessor::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -140,7 +139,7 @@ Moose::Meta::Method::Accessor - A Moose Method metaclass for accessors
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Augmented;
 BEGIN {
   $Moose::Meta::Method::Augmented::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Augmented::VERSION = '2.1204';
+$Moose::Meta::Method::Augmented::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -74,7 +74,7 @@ Moose::Meta::Method::Augmented - A Moose Method metaclass for augmented methods
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,8 @@
-
 package Moose::Meta::Method::Constructor;
 BEGIN {
   $Moose::Meta::Method::Constructor::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Constructor::VERSION = '2.1204';
+$Moose::Meta::Method::Constructor::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -76,7 +75,7 @@ Moose::Meta::Method::Constructor - Method Meta Object for constructors
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,8 @@
-
 package Moose::Meta::Method::Delegation;
 BEGIN {
   $Moose::Meta::Method::Delegation::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Delegation::VERSION = '2.1204';
+$Moose::Meta::Method::Delegation::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -152,7 +151,7 @@ Moose::Meta::Method::Delegation - A Moose Method metaclass for delegation method
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,8 @@
-
 package Moose::Meta::Method::Destructor;
 BEGIN {
   $Moose::Meta::Method::Destructor::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Destructor::VERSION = '2.1204';
+$Moose::Meta::Method::Destructor::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -148,7 +147,7 @@ Moose::Meta::Method::Destructor - Method Meta Object for destructors
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,8 @@
-
 package Moose::Meta::Method::Meta;
 BEGIN {
   $Moose::Meta::Method::Meta::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Meta::VERSION = '2.1204';
+$Moose::Meta::Method::Meta::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -44,7 +43,7 @@ Moose::Meta::Method::Meta - A Moose Method metaclass for C<meta> methods
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method::Overridden;
 BEGIN {
   $Moose::Meta::Method::Overridden::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::Overridden::VERSION = '2.1204';
+$Moose::Meta::Method::Overridden::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -67,7 +67,7 @@ Moose::Meta::Method::Overridden - A Moose Method metaclass for overridden method
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -2,7 +2,7 @@ package Moose::Meta::Method;
 BEGIN {
   $Moose::Meta::Method::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Method::VERSION = '2.1204';
+$Moose::Meta::Method::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -28,7 +28,7 @@ Moose::Meta::Method - A Moose Method metaclass
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -2,7 +2,7 @@ package Moose::Meta::Mixin::AttributeCore;
 BEGIN {
   $Moose::Meta::Mixin::AttributeCore::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Mixin::AttributeCore::VERSION = '2.1204';
+$Moose::Meta::Mixin::AttributeCore::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -119,7 +119,7 @@ Moose::Meta::Mixin::AttributeCore - Core attributes shared by attribute metaclas
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,8 @@
-
 package Moose::Meta::Object::Trait;
 BEGIN {
   $Moose::Meta::Object::Trait::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Object::Trait::VERSION = '2.1204';
+$Moose::Meta::Object::Trait::VERSION = '2.1210';
 use Scalar::Util qw(blessed);
 
 sub _get_compatible_metaclass {
@@ -43,7 +42,7 @@ Moose::Meta::Object::Trait - Some overrides for L<Class::MOP::Object> functional
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -2,7 +2,7 @@ package Moose::Meta::Role::Application::RoleSummation;
 BEGIN {
   $Moose::Meta::Role::Application::RoleSummation::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Role::Application::RoleSummation::VERSION = '2.1204';
+$Moose::Meta::Role::Application::RoleSummation::VERSION = '2.1210';
 use strict;
 use warnings;
 use metaclass;
@@ -136,9 +136,9 @@ sub apply_attributes {
             my $role1 = $seen{$name}->associated_role->name;
             my $role2 = $attr->associated_role->name;
 
-            throw_exception( AttributeConflictInSummation => attribute_name => $name,
-                                                             role_name      => $role1,
-                                                             second_role    => Class::MOP::class_of($role2)
+            throw_exception( AttributeConflictInSummation => attribute_name   => $name,
+                                                             role_name        => $role1,
+                                                             second_role_name => $role2,
                            );
         }
 
@@ -218,15 +218,16 @@ sub apply_override_method_modifiers {
 
     my %seen;
     foreach my $override (@all_overrides) {
+        my @role_names = map { $_->name } @{$c->get_roles};
         if ( $c->has_method($override->{name}) ){
-            throw_exception( OverrideConflictInSummation => roles            => $c->get_roles,
+            throw_exception( OverrideConflictInSummation => role_names       => \@role_names,
                                                             role_application => $self,
                                                             method_name      => $override->{name}
                            );
         }
         if (exists $seen{$override->{name}}) {
             if ( $seen{$override->{name}} != $override->{method} ) {
-                throw_exception( OverrideConflictInSummation => roles               => $c->get_roles,
+                throw_exception( OverrideConflictInSummation => role_names          => \@role_names,
                                                                 role_application    => $self,
                                                                 method_name         => $override->{name},
                                                                 two_overrides_found => 1
@@ -272,7 +273,7 @@ Moose::Meta::Role::Application::RoleSummation - Combine two or more roles
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -2,7 +2,7 @@ package Moose::Meta::Role::Application::ToClass;
 BEGIN {
   $Moose::Meta::Role::Application::ToClass::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Role::Application::ToClass::VERSION = '2.1204';
+$Moose::Meta::Role::Application::ToClass::VERSION = '2.1210';
 use strict;
 use warnings;
 use metaclass;
@@ -41,15 +41,15 @@ sub apply {
 sub check_role_exclusions {
     my ($self, $role, $class) = @_;
     if ($class->excludes_role($role->name)) {
-        throw_exception( ConflictDetectedInCheckRoleExclusionsInToClass => class => $class,
-                                                                           role  => $role
+        throw_exception( ConflictDetectedInCheckRoleExclusionsInToClass => class_name => $class->name,
+                                                                           role_name  => $role->name,
                        );
     }
     foreach my $excluded_role_name ($role->get_excluded_roles_list) {
         if ($class->does_role($excluded_role_name)) {
-            throw_exception( ClassDoesTheExcludedRole => role          => $role,
-                                                         excluded_role => Class::MOP::class_of($excluded_role_name),
-                                                         class         => $class
+            throw_exception( ClassDoesTheExcludedRole => role_name          => $role->name,
+                                                         excluded_role_name => $excluded_role_name,
+                                                         class_name         => $class->name,
                            );
         }
     }
@@ -91,21 +91,21 @@ sub check_required_methods {
 
         my @same_role_conflicts = grep { $_->roles_as_english_list eq $roles } @conflicts;
 
-        throw_exception( MethodNameConflictInRoles => conflict => \@same_role_conflicts,
-                                                      class    => $class
+        throw_exception( MethodNameConflictInRoles => conflict   => \@same_role_conflicts,
+                                                      class_name => $class->name
                        );
     }
     elsif (@missing) {
         if (my $meth = firstval { $class->name->can($_) } @missing) {
-            throw_exception( RequiredMethodsImportedByClass => class           => $class,
-                                                               role            => $role,
+            throw_exception( RequiredMethodsImportedByClass => class_name      => $class->name,
+                                                               role_name       => $role->name,
                                                                missing_methods => \@missing,
                                                                imported_method => $meth
                            );
         }
         else {
-            throw_exception( RequiredMethodsNotImplementedByClass => class           => $class,
-                                                                     role            => $role,
+            throw_exception( RequiredMethodsNotImplementedByClass => class_name      => $class->name,
+                                                                     role_name       => $role->name,
                                                                      missing_methods => \@missing,
                            );
         }
@@ -163,8 +163,8 @@ sub apply_methods {
         if ( $class_method && $class_method->body != $method->body ) {
             throw_exception( CannotCreateMethodAliasLocalMethodIsPresentInClass => aliased_method_name => $aliased_method_name,
                                                                                    method              => $method,
-                                                                                   role                => $role,
-                                                                                   class               => $class
+                                                                                   role_name           => $role->name,
+                                                                                   class_name          => $class->name,
                            );
         }
 
@@ -228,7 +228,7 @@ Moose::Meta::Role::Application::ToClass - Compose a role into a class
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -2,7 +2,7 @@ package Moose::Meta::Role::Application::ToInstance;
 BEGIN {
   $Moose::Meta::Role::Application::ToInstance::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Role::Application::ToInstance::VERSION = '2.1204';
+$Moose::Meta::Role::Application::ToInstance::VERSION = '2.1210';
 use strict;
 use warnings;
 use metaclass;
@@ -54,7 +54,7 @@ Moose::Meta::Role::Application::ToInstance - Compose a role into an instance
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -2,7 +2,7 @@ package Moose::Meta::Role::Application::ToRole;
 BEGIN {
   $Moose::Meta::Role::Application::ToRole::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Role::Application::ToRole::VERSION = '2.1204';
+$Moose::Meta::Role::Application::ToRole::VERSION = '2.1210';
 use strict;
 use warnings;
 use metaclass;
@@ -22,15 +22,15 @@ sub apply {
 sub check_role_exclusions {
     my ($self, $role1, $role2) = @_;
     if ( $role2->excludes_role($role1->name) ) {
-        throw_exception( ConflictDetectedInCheckRoleExclusions => role          => $role2,
-                                                                  excluded_role => $role1
+        throw_exception( ConflictDetectedInCheckRoleExclusions => role_name          => $role2->name,
+                                                                  excluded_role_name => $role1->name,
                        );
     }
     foreach my $excluded_role_name ($role1->get_excluded_roles_list) {
         if ( $role2->does_role($excluded_role_name) ) {
-            throw_exception( RoleDoesTheExcludedRole => role          => $role2,
-                                                        excluded_role => Class::MOP::class_of($excluded_role_name),
-                                                        second_role   => $role1
+            throw_exception( RoleDoesTheExcludedRole => role_name          => $role2->name,
+                                                        excluded_role_name => $excluded_role_name,
+                                                        second_role_name   => $role1->name,
                            );
         }
         $role2->add_excluded_roles($excluded_role_name);
@@ -63,9 +63,9 @@ sub apply_attributes {
 
             my $role2_name = $role2->name;
 
-            throw_exception( AttributeConflictInRoles => role           => $role1,
-                                                         second_role    => $role2,
-                                                         attribute_name => $attribute_name
+            throw_exception( AttributeConflictInRoles => role_name        => $role1->name,
+                                                         second_role_name => $role2->name,
+                                                         attribute_name   => $attribute_name
                            );
         }
         else {
@@ -111,10 +111,10 @@ sub apply_methods {
         if (   $role2_method
             && $role2_method->body != $method->body ) {
 
-            throw_exception( CannotCreateMethodAliasLocalMethodIsPresent => aliased_method_name => $aliased_method_name,
-                                                                            method              => $method,
-                                                                            role                => $role2,
-                                                                            role_being_applied  => $role1
+            throw_exception( CannotCreateMethodAliasLocalMethodIsPresent => aliased_method_name     => $aliased_method_name,
+                                                                            method                  => $method,
+                                                                            role_name               => $role2->name,
+                                                                            role_being_applied_name => $role1->name,
                            );
         }
 
@@ -139,9 +139,9 @@ sub apply_override_method_modifiers {
             # we have a conflict here, because you cannot
             # combine an overridden method with a locally
             # defined one
-            throw_exception( OverrideConflictInComposition => role               => $role2,
-                                                              role_being_applied => $role1,
-                                                              method_name        => $method_name
+            throw_exception( OverrideConflictInComposition => role_name               => $role2->name,
+                                                              role_being_applied_name => $role1->name,
+                                                              method_name             => $method_name
                            );
         }
         else {
@@ -151,10 +151,10 @@ sub apply_override_method_modifiers {
             if ($role2->has_override_method_modifier($method_name) &&
                 $role1->get_override_method_modifier($method_name) != $role2->get_override_method_modifier($method_name)) {
 
-                throw_exception( OverrideConflictInComposition => role                => $role2,
-                                                                  role_being_applied  => $role1,
-                                                                  method_name         => $method_name,
-                                                                  two_overrides_found => 1
+                throw_exception( OverrideConflictInComposition => role_name               => $role2->name,
+                                                                  role_being_applied_name => $role1->name,
+                                                                  method_name             => $method_name,
+                                                                  two_overrides_found     => 1
                                );
             }
             else {
@@ -198,7 +198,7 @@ Moose::Meta::Role::Application::ToRole - Compose a role into another role
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -2,7 +2,7 @@ package Moose::Meta::Role::Application;
 BEGIN {
   $Moose::Meta::Role::Application::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Role::Application::VERSION = '2.1204';
+$Moose::Meta::Role::Application::VERSION = '2.1210';
 use strict;
 use warnings;
 use metaclass;
@@ -93,7 +93,7 @@ Moose::Meta::Role::Application - A base class for role application
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -2,7 +2,7 @@ package Moose::Meta::Role::Attribute;
 BEGIN {
   $Moose::Meta::Role::Attribute::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Role::Attribute::VERSION = '2.1204';
+$Moose::Meta::Role::Attribute::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -142,7 +142,7 @@ Moose::Meta::Role::Attribute - The Moose attribute metaclass for Roles
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -2,7 +2,7 @@ package Moose::Meta::Role::Composite;
 BEGIN {
   $Moose::Meta::Role::Composite::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Role::Composite::VERSION = '2.1204';
+$Moose::Meta::Role::Composite::VERSION = '2.1210';
 use strict;
 use warnings;
 use metaclass;
@@ -76,6 +76,12 @@ sub new {
     $class->_new(\%params);
 }
 
+# There's no such thing as an anonymous composite role since composites are an
+# artifact of Moose's internals. However, a composite role that contains an
+# anon role may _look_ like an anon role since $self->name =~ /$anon_key/ can
+# return true if the first role in the composite is anonymous itself.
+sub is_anon { 0 }
+
 # This is largely a copy of what's in Moose::Meta::Role (itself
 # largely a copy of Class::MOP::Class). However, we can't actually
 # call add_package_symbol, because there's no package into which to
@@ -171,7 +177,7 @@ Moose::Meta::Role::Composite - An object to represent the set of roles
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,8 @@
-
 package Moose::Meta::Role::Method::Conflicting;
 BEGIN {
   $Moose::Meta::Role::Method::Conflicting::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Role::Method::Conflicting::VERSION = '2.1204';
+$Moose::Meta::Role::Method::Conflicting::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -38,7 +37,7 @@ Moose::Meta::Role::Method::Conflicting - A Moose metaclass for conflicting metho
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,8 @@
-
 package Moose::Meta::Role::Method::Required;
 BEGIN {
   $Moose::Meta::Role::Method::Required::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Role::Method::Required::VERSION = '2.1204';
+$Moose::Meta::Role::Method::Required::VERSION = '2.1210';
 use strict;
 use warnings;
 use metaclass;
@@ -40,7 +39,7 @@ Moose::Meta::Role::Method::Required - A Moose metaclass for required methods in
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,8 @@
-
 package Moose::Meta::Role::Method;
 BEGIN {
   $Moose::Meta::Role::Method::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Role::Method::VERSION = '2.1204';
+$Moose::Meta::Role::Method::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -36,7 +35,7 @@ Moose::Meta::Role::Method - A Moose Method metaclass for Roles
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -2,7 +2,7 @@ package Moose::Meta::Role;
 BEGIN {
   $Moose::Meta::Role::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::Role::VERSION = '2.1204';
+$Moose::Meta::Role::VERSION = '2.1210';
 use strict;
 use warnings;
 use metaclass;
@@ -239,13 +239,13 @@ sub add_attribute {
 
     if (blessed $_[0] && ! $_[0]->isa('Moose::Meta::Role::Attribute') ) {
         my $class = ref $_[0];
-        throw_exception( CannotAddAsAnAttributeToARole => role            => $self,
-                                                          attribute_class => $class
+        throw_exception( CannotAddAsAnAttributeToARole => role_name       => $self->name,
+                                                          attribute_class => $class,
                        );
     }
     elsif (!blessed($_[0]) && defined($_[0]) && $_[0] =~ /^\+(.*)/) {
         throw_exception( AttributeExtensionIsNotSupportedInRoles => attribute_name => $_[0],
-                                                                    role           => $self
+                                                                    role_name      => $self->name,
                        );
     }
 
@@ -364,7 +364,7 @@ sub add_override_method_modifier {
     my ($self, $method_name, $method) = @_;
     (!$self->has_method($method_name))
         || throw_exception( CannotOverrideALocalMethod => method_name => $method_name,
-                                                          role        => $self
+                                                          role_name   => $self->name,
                           );
     $self->get_override_method_modifiers_map->{$method_name} = $method;
 }
@@ -405,7 +405,7 @@ sub add_role {
     my ($self, $role) = @_;
     (blessed($role) && $role->isa('Moose::Meta::Role'))
         || throw_exception( AddRoleToARoleTakesAMooseMetaRole => role_to_be_added => $role,
-                                                                 role             => $self
+                                                                 role_name        => $self->name,
                           );
     push @{$self->get_roles} => $role;
     $self->reset_package_cache_flag;
@@ -424,7 +424,7 @@ sub calculate_all_roles {
 sub does_role {
     my ($self, $role) = @_;
     (defined $role)
-        || throw_exception( RoleNameRequiredForMooseMetaRole => role => $self );
+        || throw_exception( RoleNameRequiredForMooseMetaRole => role_name => $self->name );
     my $role_name = blessed $role ? $role->name : $role;
     # if we are it,.. then return true
     return 1 if $role_name eq $self->name;
@@ -445,8 +445,8 @@ sub apply {
     my ($self, $other, %args) = @_;
 
     (blessed($other))
-        || throw_exception( ApplyTakesABlessedInstance => param => $other,
-                                                          role  => $self
+        || throw_exception( ApplyTakesABlessedInstance => param     => $other,
+                                                          role_name => $self->name,
                           );
 
     my $application_class;
@@ -755,7 +755,7 @@ Moose::Meta::Role - The Moose Role metaclass
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,8 @@
-
 package Moose::Meta::TypeCoercion::Union;
 BEGIN {
   $Moose::Meta::TypeCoercion::Union::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::TypeCoercion::Union::VERSION = '2.1204';
+$Moose::Meta::TypeCoercion::Union::VERSION = '2.1210';
 use strict;
 use warnings;
 use metaclass;
@@ -20,7 +19,7 @@ sub compile_type_coercion {
 
     (blessed $type_constraint && $type_constraint->isa('Moose::Meta::TypeConstraint::Union'))
      || throw_exception( NeedsTypeConstraintUnionForTypeCoercionUnion => type_coercion_union_object => $self,
-                                                                         type_name                  => $type_constraint
+                                                                         type_name                  => $type_constraint->name
                        );
 
     $self->_compiled_type_coercion(
@@ -61,12 +60,13 @@ Moose::Meta::TypeCoercion::Union - The Moose Type Coercion metaclass for Unions
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
 This is a subclass of L<Moose::Meta::TypeCoercion> that is used for
 L<Moose::Meta::TypeConstraint::Union> objects.
+
 =head1 METHODS
 
 =over 4
@@ -1,9 +1,8 @@
-
 package Moose::Meta::TypeCoercion;
 BEGIN {
   $Moose::Meta::TypeCoercion::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::TypeCoercion::VERSION = '2.1204';
+$Moose::Meta::TypeCoercion::VERSION = '2.1210';
 use strict;
 use warnings;
 use metaclass;
@@ -119,7 +118,7 @@ Moose::Meta::TypeCoercion - The Moose Type Coercion metaclass
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -2,7 +2,7 @@ package Moose::Meta::TypeConstraint::Class;
 BEGIN {
   $Moose::Meta::TypeConstraint::Class::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::TypeConstraint::Class::VERSION = '2.1204';
+$Moose::Meta::TypeConstraint::Class::VERSION = '2.1210';
 use strict;
 use warnings;
 use metaclass;
@@ -146,7 +146,7 @@ Moose::Meta::TypeConstraint::Class - Class/TypeConstraint parallel hierarchy
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -2,7 +2,7 @@ package Moose::Meta::TypeConstraint::DuckType;
 BEGIN {
   $Moose::Meta::TypeConstraint::DuckType::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::TypeConstraint::DuckType::VERSION = '2.1204';
+$Moose::Meta::TypeConstraint::DuckType::VERSION = '2.1210';
 use strict;
 use warnings;
 use metaclass;
@@ -119,7 +119,7 @@ Moose::Meta::TypeConstraint::DuckType - Type constraint for duck typing
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -2,7 +2,7 @@ package Moose::Meta::TypeConstraint::Enum;
 BEGIN {
   $Moose::Meta::TypeConstraint::Enum::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::TypeConstraint::Enum::VERSION = '2.1204';
+$Moose::Meta::TypeConstraint::Enum::VERSION = '2.1210';
 use strict;
 use warnings;
 use metaclass;
@@ -128,7 +128,7 @@ Moose::Meta::TypeConstraint::Enum - Type constraint for enumerated values.
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -2,7 +2,7 @@ package Moose::Meta::TypeConstraint::Parameterizable;
 BEGIN {
   $Moose::Meta::TypeConstraint::Parameterizable::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::TypeConstraint::Parameterizable::VERSION = '2.1204';
+$Moose::Meta::TypeConstraint::Parameterizable::VERSION = '2.1210';
 use strict;
 use warnings;
 use metaclass;
@@ -55,9 +55,9 @@ sub _can_coerce_constraint_from {
 sub generate_inline_for {
     my ($self, $type, $val) = @_;
 
-    throw_exception( CannotGenerateInlineConstraint => parameterizable_type_object => $self,
-                                                       type                        => $type,
-                                                       value                       => $val
+    throw_exception( CannotGenerateInlineConstraint => parameterizable_type_object_name => $self->name,
+                                                       type_name                        => $type->name,
+                                                       value                            => $val,
                    )
         unless $self->has_inline_generator;
 
@@ -81,7 +81,7 @@ sub parameterize {
         if($parent->can('type_parameter')) {
             unless ( $contained_tc->is_a_type_of($parent->type_parameter) ) {
                 throw_exception( ParameterIsNotSubtypeOfParent => type_parameter => $type_parameter,
-                                                                  type           => $self
+                                                                  type_name      => $self->name,
                                );
             }
         }
@@ -118,7 +118,7 @@ Moose::Meta::TypeConstraint::Parameterizable - Type constraints which can take a
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -2,7 +2,7 @@ package Moose::Meta::TypeConstraint::Parameterized;
 BEGIN {
   $Moose::Meta::TypeConstraint::Parameterized::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::TypeConstraint::Parameterized::VERSION = '2.1204';
+$Moose::Meta::TypeConstraint::Parameterized::VERSION = '2.1210';
 use strict;
 use warnings;
 use metaclass;
@@ -44,13 +44,13 @@ sub compile_type_constraint {
     my $self = shift;
 
     unless ( $self->has_type_parameter ) {
-        throw_exception( CannotCreateHigherOrderTypeWithoutATypeParameter => type => $self );
+        throw_exception( CannotCreateHigherOrderTypeWithoutATypeParameter => type_name => $self->name );
     }
 
     my $type_parameter = $self->type_parameter;
 
     unless ( blessed $type_parameter && $type_parameter->isa('Moose::Meta::TypeConstraint') ) {
-        throw_exception( TypeParameterMustBeMooseMetaType => type => $self );
+        throw_exception( TypeParameterMustBeMooseMetaType => type_name => $self->name );
     }
 
     foreach my $type (Moose::Util::TypeConstraints::get_all_parameterizable_types()) {
@@ -62,7 +62,9 @@ sub compile_type_constraint {
 
     # if we get here, then we couldn't
     # find a way to parameterize this type
-    throw_exception( TypeConstraintCannotBeUsedForAParameterizableType => type => $self );
+    throw_exception( TypeConstraintCannotBeUsedForAParameterizableType => type_name        => $self->name,
+                                                                          parent_type_name => $self->parent->name,
+                   );
 }
 
 sub can_be_inlined {
@@ -116,7 +118,7 @@ Moose::Meta::TypeConstraint::Parameterized - Type constraints with a bound param
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 METHODS
 
@@ -1,9 +1,8 @@
-
 package Moose::Meta::TypeConstraint::Registry;
 BEGIN {
   $Moose::Meta::TypeConstraint::Registry::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::TypeConstraint::Registry::VERSION = '2.1204';
+$Moose::Meta::TypeConstraint::Registry::VERSION = '2.1210';
 use strict;
 use warnings;
 use metaclass;
@@ -81,7 +80,7 @@ Moose::Meta::TypeConstraint::Registry - registry for type constraints
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -2,7 +2,7 @@ package Moose::Meta::TypeConstraint::Role;
 BEGIN {
   $Moose::Meta::TypeConstraint::Role::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::TypeConstraint::Role::VERSION = '2.1204';
+$Moose::Meta::TypeConstraint::Role::VERSION = '2.1210';
 use strict;
 use warnings;
 use metaclass;
@@ -126,7 +126,7 @@ Moose::Meta::TypeConstraint::Role - Role/TypeConstraint parallel hierarchy
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,8 @@
-
 package Moose::Meta::TypeConstraint::Union;
 BEGIN {
   $Moose::Meta::TypeConstraint::Union::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::TypeConstraint::Union::VERSION = '2.1204';
+$Moose::Meta::TypeConstraint::Union::VERSION = '2.1210';
 use strict;
 use warnings;
 use metaclass;
@@ -212,7 +211,7 @@ Moose::Meta::TypeConstraint::Union - A union of Moose type constraints
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,8 @@
-
 package Moose::Meta::TypeConstraint;
 BEGIN {
   $Moose::Meta::TypeConstraint::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Meta::TypeConstraint::VERSION = '2.1204';
+$Moose::Meta::TypeConstraint::VERSION = '2.1210';
 use strict;
 use warnings;
 use metaclass;
@@ -141,7 +140,7 @@ sub coerce {
     my $coercion = $self->coercion;
 
     unless ($coercion) {
-        throw_exception( CoercingWithoutCoercions => type => $self );
+        throw_exception( CoercingWithoutCoercions => type_name => $self->name );
     }
 
     return $_[0] if $self->check($_[0]);
@@ -189,7 +188,7 @@ sub _inline_check {
     my $self = shift;
 
     unless ( $self->can_be_inlined ) {
-        throw_exception( CannotInlineTypeConstraintCheck => type => $self );
+        throw_exception( CannotInlineTypeConstraintCheck => type_name => $self->name );
     }
 
     if ( $self->has_parent && $self->constraint == $null_constraint ) {
@@ -295,7 +294,7 @@ sub _actually_compile_type_constraint {
 
     my $check = $self->constraint;
     unless ( defined $check ) {
-        throw_exception( NoConstraintCheckForTypeConstraint => type => $self );
+        throw_exception( NoConstraintCheckForTypeConstraint => type_name => $self->name );
     }
 
     return $self->_compile_subtype($check)
@@ -379,7 +378,7 @@ Moose::Meta::TypeConstraint - The Moose Type Constraint metaclass
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,8 @@
-
 package Moose::Object;
 BEGIN {
   $Moose::Object::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Object::VERSION = '2.1204';
+$Moose::Object::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -122,7 +121,7 @@ sub does {
     my $class = Scalar::Util::blessed($self) || $self;
     my $meta = Class::MOP::Class->initialize($class);
     (defined $role_name)
-        || Moose::Util::throw_exception( DoesRequiresRoleName => class => $meta );
+        || Moose::Util::throw_exception( DoesRequiresRoleName => class_name => $meta->name );
     return 1 if $meta->can('does_role') && $meta->does_role($role_name);
     return 0;
 }
@@ -150,7 +149,7 @@ Moose::Object - The base object for Moose
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -4,7 +4,7 @@ package Moose::Role;
 BEGIN {
   $Moose::Role::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Role::VERSION = '2.1204';
+$Moose::Role::VERSION = '2.1210';
 use Scalar::Util 'blessed';
 use Carp         'croak';
 use Class::Load  'is_class_loaded';
@@ -29,21 +29,21 @@ sub with {
 
 sub requires {
     my $meta = shift;
-    throw_exception( MustSpecifyAtleastOneMethod => role => $meta ) unless @_;
+    throw_exception( MustSpecifyAtleastOneMethod => role_name => $meta->name ) unless @_;
     $meta->add_required_methods(@_);
 }
 
 sub excludes {
     my $meta = shift;
-    throw_exception( MustSpecifyAtleastOneRole => role => $meta ) unless @_;
+    throw_exception( MustSpecifyAtleastOneRole => role_name => $meta->name ) unless @_;
     $meta->add_excluded_roles(@_);
 }
 
 sub has {
     my $meta = shift;
     my $name = shift;
-    throw_exception( InvalidHasProvidedInARole => role            => $meta,
-                                                  attribute_name  => $name
+    throw_exception( InvalidHasProvidedInARole => role_name       => $meta->name,
+                                                  attribute_name  => $name,
                    )
         if @_ == 1;
     my %context = Moose::Util::_caller_info;
@@ -60,7 +60,7 @@ sub _add_method_modifier {
 
     if ( ref($_[0]) eq 'Regexp' ) {
         throw_exception( RolesDoNotSupportRegexReferencesForMethodModifiers => modifier_type => $type,
-                                                                               role          => $meta
+                                                                               role_name     => $meta->name,
                        );
     }
 
@@ -133,12 +133,10 @@ sub init_meta {
             if ( $meta->isa('Moose::Meta::Class') ) {
                 throw_exception( MetaclassIsAClassNotASubclassOfGivenMetaclass => class_name => $role,
                                                                                   metaclass  => $metaclass,
-                                                                                  class      => $meta
                                );
             } else {
                 throw_exception( MetaclassIsNotASubclassOfGivenMetaclass => class_name => $role,
                                                                             metaclass  => $metaclass,
-                                                                            class      => $meta
                                );
             }
         }
@@ -184,7 +182,7 @@ Moose::Role - The Moose Role
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -276,6 +274,9 @@ this, your class's C<meta> object will have the specified traits
 applied to it. See L<Moose/Metaclass and Trait Name Resolution> for more
 details.
 
+All role metaclasses (note, not the role itself) extend L<Moose::Meta::Role>.
+You can test if a package is a role or not using L<Moose::Util/is_role>.
+
 =head1 APPLYING ROLES
 
 In addition to being applied to a class using the 'with' syntax (see
@@ -1,7 +1,4 @@
-package Moose::Spec::Role;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Spec::Role
 # ABSTRACT: Formal spec for Role behavior
 
 __END__
@@ -16,7 +13,7 @@ Moose::Spec::Role - Formal spec for Role behavior
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -1,7 +1,4 @@
-package Moose::Unsweetened;
-use strict;
-use warnings;
-
+# PODNAME: Moose::Unsweetened
 # ABSTRACT: Moved to Moose::Manual::Unsweetened, so go read that
 
 __END__
@@ -16,7 +13,7 @@ Moose::Unsweetened - Moved to Moose::Manual::Unsweetened, so go read that
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 DESCRIPTION
 
@@ -2,7 +2,7 @@ package Moose::Util::MetaRole;
 BEGIN {
   $Moose::Util::MetaRole::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Util::MetaRole::VERSION = '2.1204';
+$Moose::Util::MetaRole::VERSION = '2.1210';
 use strict;
 use warnings;
 use Scalar::Util 'blessed';
@@ -82,8 +82,8 @@ sub apply_base_class_roles {
     my %args = @_;
 
     my $meta = _metathing_for( $args{for} || $args{for_class} );
-    throw_exception( CannotApplyBaseClassRolesToRole => params => \%args,
-                                                        role   => $meta
+    throw_exception( CannotApplyBaseClassRolesToRole => params    => \%args,
+                                                        role_name => $meta->name,
                    )
         if $meta->isa('Moose::Meta::Role');
 
@@ -133,7 +133,7 @@ Moose::Util::MetaRole - Apply roles to any metaclass, as well as the object base
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -2,7 +2,7 @@ package Moose::Util::TypeConstraints::Builtins;
 BEGIN {
   $Moose::Util::TypeConstraints::Builtins::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Util::TypeConstraints::Builtins::VERSION = '2.1204';
+$Moose::Util::TypeConstraints::Builtins::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -305,4 +305,3 @@ __END__
 =for pod_coverage_needs_some_pod
 
 =cut
-
@@ -2,7 +2,7 @@ package Moose::Util::TypeConstraints;
 BEGIN {
   $Moose::Util::TypeConstraints::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Util::TypeConstraints::VERSION = '2.1204';
+$Moose::Util::TypeConstraints::VERSION = '2.1210';
 use Carp ();
 use List::MoreUtils qw( all any );
 use Scalar::Util qw( blessed reftype );
@@ -24,7 +24,6 @@ sub inline_as (&);
 
 ## --------------------------------------------------------
 
-use Moose::Deprecated;
 use Moose::Meta::TypeConstraint;
 use Moose::Meta::TypeConstraint::Union;
 use Moose::Meta::TypeConstraint::Parameterized;
@@ -160,7 +159,7 @@ sub create_class_type_constraint {
     if (my $type = $REGISTRY->get_type_constraint($class)) {
         if (!($type->isa('Moose::Meta::TypeConstraint::Class') && $type->class eq $class)) {
             throw_exception( TypeConstraintIsAlreadyCreated => package_defined_in => $pkg_defined_in,
-                                                               type               => $type
+                                                               type_name          => $type->name,
                            );
         }
         else {
@@ -193,7 +192,7 @@ sub create_role_type_constraint {
 
     if (my $type = $REGISTRY->get_type_constraint($role)) {
         if (!($type->isa('Moose::Meta::TypeConstraint::Role') && $type->role eq $role)) {
-            throw_exception( TypeConstraintIsAlreadyCreated => type               => $type,
+            throw_exception( TypeConstraintIsAlreadyCreated => type_name          => $type->name,
                                                                package_defined_in => $pkg_defined_in
                            );
         }
@@ -515,9 +514,9 @@ sub match_on_type {
         }
 
         (ref $action eq 'CODE')
-            || throw_exception( MatchActionMustBeACodeRef => type     => $type,
-                                                             action   => $action,
-                                                             to_match => $to_match
+            || throw_exception( MatchActionMustBeACodeRef => type_name => $type->name,
+                                                             action    => $action,
+                                                             to_match  => $to_match
                               );
 
         if ($type->check($to_match)) {
@@ -554,7 +553,7 @@ sub _create_type_constraint ($$$;$) {
 
         ( $type->_package_defined_in eq $pkg_defined_in )
             || throw_exception( TypeConstraintIsAlreadyCreated => package_defined_in => $pkg_defined_in,
-                                                                  type               => $type
+                                                                  type_name          => $type->name,
                               )
             if defined $type;
 
@@ -774,7 +773,7 @@ Moose::Util::TypeConstraints - Type constraint system for Moose
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -2,7 +2,7 @@ package Moose::Util;
 BEGIN {
   $Moose::Util::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::Util::VERSION = '2.1204';
+$Moose::Util::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -19,6 +19,7 @@ use Try::Tiny;
 
 my @exports = qw[
     find_meta
+    is_role
     does_role
     search_class_by_role
     ensure_all_roles
@@ -57,6 +58,14 @@ sub find_meta { Class::MOP::class_of(@_) }
 
 ## the functions ...
 
+sub is_role {
+    my $package_or_obj = shift;
+
+    my $meta = find_meta($package_or_obj);
+    return if not $meta;
+    return $meta->isa('Moose::Meta::Role');
+}
+
 sub does_role {
     my ($class_or_obj, $role) = @_;
 
@@ -535,7 +544,7 @@ Moose::Util - Utilities for working with Moose classes
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -566,6 +575,10 @@ This method takes a class name or object and attempts to find a
 metaclass for the class, if one exists. It will B<not> create one if it
 does not yet exist.
 
+=item B<is_role($package_or_obj)>
+
+Returns true if the provided package name or object is a L<Moose::Role>.
+
 =item B<does_role($class_or_obj, $role_or_obj)>
 
 Returns true if C<$class_or_obj> does the given C<$role_or_obj>. The role can
@@ -4,7 +4,7 @@ package Moose;
 BEGIN {
   $Moose::AUTHORITY = 'cpan:STEVAN';
 }
-$Moose::VERSION = '2.1204';
+$Moose::VERSION = '2.1210';
 use 5.008003;
 
 use Scalar::Util 'blessed';
@@ -48,7 +48,7 @@ sub extends {
 
     unless ( @_ )
     {
-        throw_exception( ExtendsMissingArgs => class => $meta );
+        throw_exception( ExtendsMissingArgs => class_name => $meta->name );
     }
     # this checks the metaclass to make sure
     # it is correct, sometimes it can get out
@@ -301,7 +301,7 @@ Moose - A postmodern object system for Perl 5
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -997,6 +997,8 @@ are a few of our favorites. Feel free to contribute more!
 
 =item * Moo, Only Overengineered, Slow, and Execrable (blame rjbs!)
 
+=item * Massive Object-Oriented Stacktrace Emitter
+
 =back
 
 =head1 ACKNOWLEDGEMENTS
@@ -2,7 +2,7 @@ package Test::Moose;
 BEGIN {
   $Test::Moose::AUTHORITY = 'cpan:STEVAN';
 }
-$Test::Moose::VERSION = '2.1204';
+$Test::Moose::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -74,16 +74,13 @@ sub has_attribute_ok ($$;$) {
 sub with_immutable (&@) {
     my $block = shift;
     my $before = $Test->current_test;
-    my $passing_before = (Test::Builder->VERSION < 1.005 ? 0 : $Test->history->pass_count) || 0;
 
     $block->(0);
     Class::MOP::class_of($_)->make_immutable for @_;
     $block->(1);
 
     my $num_tests = $Test->current_test - $before;
-    my $all_passed = Test::Builder->VERSION < 1.005
-        ? all { $_ } ($Test->summary)[-$num_tests..-1]
-        : $num_tests == $Test->history->pass_count - $passing_before;
+    my $all_passed = all { $_ } ($Test->summary)[-$num_tests..-1];
     return $all_passed;
 }
 
@@ -103,7 +100,7 @@ Test::Moose - Test functions for Moose specific features
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -1,21 +1,18 @@
-
 package metaclass;
 BEGIN {
   $metaclass::AUTHORITY = 'cpan:STEVAN';
 }
-$metaclass::VERSION = '2.1204';
+$metaclass::VERSION = '2.1210';
 use strict;
 use warnings;
 
-use Module::Runtime 'use_package_optimistically';
+use Module::Runtime 'use_package_optimistically', 'use_module';
 use Class::Load  'load_class';
 use Scalar::Util 'blessed';
 use Try::Tiny;
 
 use Class::MOP;
 
-use Moose::Util 'throw_exception';
-
 sub import {
     my ( $class, @args ) = @_;
 
@@ -32,7 +29,7 @@ sub import {
     }
 
     ($metaclass->isa('Class::MOP::Class'))
-        || throw_exception( MetaclassMustBeDerivedFromClassMOPClass => class_name => $metaclass );
+        || die use_module('Moose::Exception::MetaclassMustBeDerivedFromClassMOPClass')->new( class_name => $metaclass );
 
     # make sure the custom metaclasses get loaded
     foreach my $key (grep { /_(?:meta)?class$/ } keys %options) {
@@ -65,7 +62,7 @@ metaclass - a pragma for installing and using Class::MOP metaclasses
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -2,7 +2,7 @@ package oose;
 BEGIN {
   $oose::AUTHORITY = 'cpan:STEVAN';
 }
-$oose::VERSION = '2.1204';
+$oose::VERSION = '2.1210';
 use strict;
 use warnings;
 
@@ -36,7 +36,7 @@ oose - syntactic sugar to make Moose one-liners easier
 
 =head1 VERSION
 
-version 2.1204
+version 2.1210
 
 =head1 SYNOPSIS
 
@@ -1,9 +0,0 @@
-
-- add delegations for 'get', 'set' in all native attr traits.
-e.g. bool has no 'get'.
-
-
-- more native attr handlers:
-    is_member -- pass in an equality sub that compares $_[0] and $_[1]
-    first_index
-    any, all, non, notall, true, false etc.
@@ -34,7 +34,27 @@ sub _merge_requires {
 }
 
 my %include = map {; $_ => 1 } qw(
-
+  Dist::CheckConflicts
+  MooseX::NonMoose
+  Algorithm::C3
+  DateTime
+  DateTime::Calendar::Mayan
+  DateTime::Format::MySQL
+  Declare::Constraints::Simple
+  DBM::Deep
+  HTTP::Headers
+  IO::File
+  IO::String
+  Locale::US
+  Module::Refresh
+  Params::Coerce
+  Regexp::Common
+  SUPER
+  Test::Deep
+  Test::DependentModules
+  Test::LeakTrace
+  Test::Output
+  URI
 );
 
 my %exclude = map {; $_ => 1 } qw(
@@ -52,27 +72,63 @@ my $static_prereqs = do { my $x = {
                                       }
                       },
        'develop' => {
-                      'conflicts' => {
-                                       'Dist::Zilla::Plugin::Conflicts' => '== 0.11'
-                                     },
                       'requires' => {
                                       'Algorithm::C3' => '0',
-                                      'CPAN::Meta::Requirements' => '0',
                                       'Class::Load' => '0.07',
-                                      'DBM::Deep' => '0',
+                                      'DBM::Deep' => '1.003',
                                       'Data::Visitor' => '0',
                                       'DateTime' => '0',
                                       'DateTime::Calendar::Mayan' => '0',
                                       'DateTime::Format::MySQL' => '0',
                                       'Declare::Constraints::Simple' => '0',
-                                      'Dist::Zilla' => '5.012',
+                                      'ExtUtils::MakeMaker::Dist::Zilla::Develop' => '0',
+                                      'File::Find::Rule' => '0',
+                                      'File::Spec' => '0',
+                                      'HTTP::Headers' => '0',
+                                      'IO::File' => '0',
+                                      'IO::Handle' => '0',
+                                      'IO::String' => '0',
+                                      'IPC::Open3' => '0',
+                                      'Locale::US' => '0',
+                                      'Module::CPANTS::Analyse' => '0.92',
+                                      'Module::Info' => '0',
+                                      'Module::Refresh' => '0',
+                                      'MooseX::NonMoose' => '0',
+                                      'PadWalker' => '0',
+                                      'Params::Coerce' => '0',
+                                      'Regexp::Common' => '0',
+                                      'SUPER' => '1.10',
+                                      'Specio' => '0.10',
+                                      'Test::CPAN::Changes' => '0.19',
+                                      'Test::CPAN::Meta' => '0',
+                                      'Test::Deep' => '0',
+                                      'Test::Inline' => '0',
+                                      'Test::Kwalitee' => '1.15',
+                                      'Test::LeakTrace' => '0',
+                                      'Test::Memory::Cycle' => '0',
+                                      'Test::More' => '0.94',
+                                      'Test::NoTabs' => '0',
+                                      'Test::Output' => '0',
+                                      'Test::Pod' => '1.41',
+                                      'Test::Pod::Coverage' => '1.04',
+                                      'Test::Spelling' => '0',
+                                      'URI' => '0',
+                                      'blib' => '0'
+                                    },
+                      'suggests' => {
+                                      'Class::Load' => '0',
+                                      'Dist::Zilla' => '5',
                                       'Dist::Zilla::Plugin::Authority' => '0',
                                       'Dist::Zilla::Plugin::CheckChangesHasContent' => '0',
+                                      'Dist::Zilla::Plugin::CheckVersionIncrement' => '0',
                                       'Dist::Zilla::Plugin::ConfirmRelease' => '0',
-                                      'Dist::Zilla::Plugin::Conflicts' => '0',
+                                      'Dist::Zilla::Plugin::Conflicts' => '0.13001',
                                       'Dist::Zilla::Plugin::ContributorsFromGit' => '0',
                                       'Dist::Zilla::Plugin::EOLTests' => '0',
+                                      'Dist::Zilla::Plugin::EnsurePrereqsInstalled' => '0.003',
                                       'Dist::Zilla::Plugin::ExecDir' => '0',
+                                      'Dist::Zilla::Plugin::FileFinder::ByName' => '0',
+                                      'Dist::Zilla::Plugin::FileFinder::Filter' => '0',
                                       'Dist::Zilla::Plugin::GatherDir' => '0',
                                       'Dist::Zilla::Plugin::Git::Check' => '0',
                                       'Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch' => '0',
@@ -100,55 +156,24 @@ my $static_prereqs = do { my $x = {
                                       'Dist::Zilla::Plugin::Prereqs::AuthorDeps' => '0',
                                       'Dist::Zilla::Plugin::PromptIfStale' => '0',
                                       'Dist::Zilla::Plugin::PruneCruft' => '0',
-                                      'Dist::Zilla::Plugin::PruneFiles' => '0',
                                       'Dist::Zilla::Plugin::RunExtraTests' => '0',
                                       'Dist::Zilla::Plugin::ShareDir' => '0',
                                       'Dist::Zilla::Plugin::SurgicalPodWeaver' => '0',
                                       'Dist::Zilla::Plugin::Test::CPAN::Changes' => '0',
+                                      'Dist::Zilla::Plugin::Test::CheckBreaks' => '0',
                                       'Dist::Zilla::Plugin::Test::Compile' => '2.037',
                                       'Dist::Zilla::Plugin::Test::Kwalitee' => '0',
                                       'Dist::Zilla::Plugin::Test::NoTabs' => '0',
                                       'Dist::Zilla::Plugin::Test::ReportPrereqs' => '0',
                                       'Dist::Zilla::Plugin::TestRelease' => '0',
                                       'Dist::Zilla::Plugin::UploadToCPAN' => '0',
-                                      'ExtUtils::MakeMaker::Dist::Zilla::Develop' => '0',
                                       'File::Find::Rule' => '0',
-                                      'File::Spec' => '0',
                                       'File::pushd' => '0',
-                                      'HTTP::Headers' => '0',
-                                      'IO::File' => '0',
-                                      'IO::Handle' => '0',
-                                      'IO::String' => '0',
-                                      'IPC::Open3' => '0',
                                       'IPC::System::Simple' => '0',
-                                      'Locale::US' => '0',
-                                      'Module::CPANTS::Analyse' => '0.92',
-                                      'Module::Info' => '0',
-                                      'Module::Refresh' => '0',
-                                      'MooseX::NonMoose' => '0',
-                                      'PadWalker' => '0',
-                                      'Params::Coerce' => '0',
                                       'Path::Tiny' => '0',
                                       'Pod::Elemental::PerlMunger' => '0.200001',
-                                      'Regexp::Common' => '0',
-                                      'SUPER' => '0',
-                                      'Specio' => '0.07',
-                                      'Test::CPAN::Changes' => '0.19',
-                                      'Test::CPAN::Meta' => '0',
-                                      'Test::Deep' => '0',
-                                      'Test::DependentModules' => '0.13',
                                       'Test::Inline' => '0',
-                                      'Test::Inline::Extract' => '0',
-                                      'Test::Kwalitee' => '1.15',
-                                      'Test::LeakTrace' => '0',
-                                      'Test::Memory::Cycle' => '0',
-                                      'Test::More' => '0.94',
-                                      'Test::NoTabs' => '0',
-                                      'Test::Output' => '0',
-                                      'Test::Pod' => '1.41',
-                                      'Test::Spelling' => '0',
-                                      'URI' => '0',
-                                      'blib' => '0'
+                                      'Test::Inline::Extract' => '0'
                                     }
                     },
        'runtime' => {
@@ -186,6 +211,8 @@ my $static_prereqs = do { my $x = {
                                      'CPAN::Meta::Requirements' => '2.120900'
                                    },
                    'requires' => {
+                                   'CPAN::Meta::Check' => '0.007',
+                                   'CPAN::Meta::Requirements' => '0',
                                    'Test::Fatal' => '0.001',
                                    'Test::More' => '0.88',
                                    'Test::Requires' => '0.05'
@@ -2,9 +2,7 @@ use strict;
 use warnings;
 use Test::More;
 
-use Test::Requires {
-    'Test::Output' => '0.01',    # skip all if not installed
-};
+use Test::Requires 'Test::Output';  # skip all if not installed
 
 {
 
@@ -3,9 +3,7 @@ use warnings;
 
 use Test::More;
 
-use Test::Requires {
-    'Test::Output' => '0.01',
-};
+use Test::Requires 'Test::Output';
 
 {
     package Bar;
@@ -1,5 +1,7 @@
 use Test::More;
 
+# very intentionally not doing use strict; use warnings here...
+
 # for classes ...
 {
     package Foo;
@@ -5,9 +5,7 @@ use Test::Fatal;
 use Test::More;
 use Test::Moose qw( with_immutable );
 
-use Test::Requires {
-    'Test::Output' => '0.01',
-};
+use Test::Requires 'Test::Output';
 
 {
     package Baz;
@@ -21,4 +21,3 @@ use Moose::Util::TypeConstraints;
 }
 
 done_testing;
-
@@ -1,10 +1,7 @@
 use strict;
 use warnings;
 
-use Test::Requires {
-    'Test::Output' => '0.01',
-};
-
+use Test::Requires 'Test::Output';
 use Test::More;
 
 {
@@ -1,3 +1,6 @@
+use strict;
+use warnings;
+
 ## This test ensures that sub DEMOLISHALL fires even if there is no sub DEMOLISH
 ## Currently fails because of a bad optimization in DESTROY
 ## Feb 12, 2009 -- Evan Carroll me@evancarroll.com
@@ -1,9 +1,8 @@
 use strict;
 use warnings;
+
 use Test::More;
-use Test::Requires {
-    'Test::Output' => '0.01', # skip all if not installed
-};
+use Test::Requires 'Test::Output';  # skip all if not installed
 
 {
     package R;
@@ -1,3 +1,6 @@
+use strict;
+use warnings;
+
 package Foo;
 use Moose;
 
@@ -1,3 +1,6 @@
+use strict;
+use warnings;
+
 use Test::More;
 
 {
@@ -1,3 +1,6 @@
+use strict;
+use warnings;
+
 package MyRole;
 
 use Moose::Role;
@@ -1,8 +1,8 @@
-use lib "t/lib";
 use strict;
 use warnings;
 
 use Test::More;
+use lib 't/lib';
 
 BEGIN {
     package MyExporterRole;
@@ -1,16 +1,12 @@
 use strict;
 use warnings;
 
-use FindBin;
-use File::Spec::Functions;
-
 use Test::More;
 
-use lib catdir($FindBin::Bin, 'lib');
-
 use Scalar::Util 'reftype';
 use Class::MOP;
 
+use lib 't/cmop/lib';
 use ArrayBasedStorage;
 
 {
@@ -1,15 +1,10 @@
 use strict;
 use warnings;
 
-use FindBin;
-use File::Spec::Functions;
-
 use Test::More;
-
-use lib catdir($FindBin::Bin, 'lib');
-
 use Class::MOP;
 
+use lib 't/cmop/lib';
 use AttributesWithHistory;
 
 {
@@ -1,15 +1,12 @@
 use strict;
 use warnings;
 
-use FindBin;
-use File::Spec::Functions;
-
 use Test::More;
 use Test::Fatal;
 
 use Class::Load qw( is_class_loaded load_class );
 
-use lib catdir($FindBin::Bin, 'lib');
+use lib 't/cmop/lib';
 
 ## ----------------------------------------------------------------------------
 ## These are all tests which are derived from the Tree::Binary test suite
@@ -1,19 +1,12 @@
 use strict;
 use warnings;
 
-use FindBin;
-use File::Spec::Functions;
-
 use Test::More;
-
-use lib catdir($FindBin::Bin, 'lib');
+use Test::Requires 'Algorithm::C3'; # skip all if not installed
 
 use Class::MOP;
 
-use Test::Requires {
-    'Algorithm::C3' => '0.01', # skip all if not installed
-};
-
+use lib 't/cmop/lib';
 use C3MethodDispatchOrder;
 
 {
@@ -1,15 +1,10 @@
 use strict;
 use warnings;
 
-use FindBin;
-use File::Spec::Functions;
-
 use Test::More;
-
-use lib catdir($FindBin::Bin, 'lib');
-
 use Class::MOP;
 
+use lib 't/cmop/lib';
 use ClassEncapsulatedAttributes;
 
 {
@@ -1,15 +1,11 @@
 use strict;
 use warnings;
 
-use FindBin;
-use File::Spec::Functions;
-
 use Test::More;
 
-use lib catdir($FindBin::Bin, 'lib');
-
 use Scalar::Util 'reftype';
 
+use lib 't/cmop/lib';
 require InsideOutClass;
 
 {
@@ -1,15 +1,11 @@
 use strict;
 use warnings;
 
-use FindBin;
-use File::Spec::Functions;
-
 use Test::More;
 
-use lib catdir($FindBin::Bin, 'lib');
-
 use Class::MOP;
 
+use lib 't/cmop/lib';
 use InstanceCountingClass;
 
 =pod
@@ -1,15 +1,11 @@
 use strict;
 use warnings;
 
-use FindBin;
-use File::Spec::Functions;
-
 use Test::More;
 
-use lib catdir($FindBin::Bin, 'lib');
-
 use Class::MOP;
 
+use lib 't/cmop/lib';
 use LazyClass;
 
 {
@@ -1,15 +1,11 @@
 use strict;
 use warnings;
 
-use FindBin;
-use File::Spec::Functions;
-
 use Test::More;
 
-use lib catdir($FindBin::Bin, 'lib');
-
 use Class::MOP;
 
+use lib 't/cmop/lib';
 use Perl6Attribute;
 
 {
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -1,12 +1,10 @@
 use strict;
 use warnings;
 
-use Class::MOP;
 use Test::More;
+use Test::Requires 'Test::LeakTrace';   # skip all if not installed
 
-use Test::Requires {
-    'Test::LeakTrace' => '0.01', # skip all if not installed
-};
+use Class::MOP;
 
 # 5.10.0 has a bug on weaken($hash_ref) which leaks an AV.
 my $expected = ( $] == 5.010_000 ? 1 : 0 );
@@ -1,15 +1,11 @@
 use strict;
 use warnings;
 
-use FindBin;
-use File::Spec::Functions;
-
 use Test::More;
-
-use lib catdir($FindBin::Bin, 'lib');
-
 use Class::MOP;
 
+use lib 't/cmop/lib';
+
 {
     my $warnings;
     local $SIG{__WARN__} = sub { $warnings .= $_[0] };
@@ -1,16 +1,13 @@
 use strict;
 use warnings;
 
-use FindBin;
-use File::Spec::Functions;
-
 use Test::More;
 use Test::Fatal;
 use Scalar::Util;
 
 use Class::MOP;
 
-use lib catdir( $FindBin::Bin, 'lib' );
+use lib 't/cmop/lib';
 
 {
 
@@ -2,10 +2,7 @@ use strict;
 use warnings;
 
 use Test::More;
-
-use Test::Requires {
-    'Test::Output' => '0.01', # skip all if not installed
-};
+use Test::Requires 'Test::Output';  # skip all if not installed
 
 use Class::MOP;
 
@@ -1,4 +1,3 @@
-
 package # hide the package from PAUSE
     ArrayBasedStorage::Instance;
 
@@ -1,4 +1,3 @@
-
 package # hide the package from PAUSE
     AttributesWithHistory;
 
@@ -1,4 +1,3 @@
-
 package BinaryTree;
 
 use strict;
@@ -1,4 +1,3 @@
-
 package # hide from PAUSE
     C3MethodDispatchOrder;
 
@@ -1,4 +1,3 @@
-
 package # hide the package from PAUSE
     ClassEncapsulatedAttributes;
 
@@ -1,4 +1,3 @@
-
 package # hide the package from PAUSE
     InsideOutClass::Attribute;
 
@@ -1,4 +1,3 @@
-
 package # hide the package from PAUSE
     InstanceCountingClass;
 
@@ -1,4 +1,3 @@
-
 package # hide the package from PAUSE
     LazyClass::Attribute;
 
@@ -1,4 +1,3 @@
-
 package MyMetaClass::Attribute;
 
 use strict;
@@ -1,4 +1,3 @@
-
 package MyMetaClass::Instance;
 
 use strict;
@@ -1,4 +1,3 @@
-
 package MyMetaClass::Method;
 
 use strict;
@@ -1,4 +1,3 @@
-
 package MyMetaClass::Random;
 
 use strict;
@@ -1,4 +1,3 @@
-
 package MyMetaClass;
 
 use strict;
@@ -1,4 +1,3 @@
-
 package # hide the package from PAUSE
     Perl6Attribute;
 
@@ -1,4 +1,3 @@
-#!/usr/bin/env perl
 package SyntaxError;
 use strict;
 use warnings;
@@ -8,4 +7,3 @@ use warnings;
     {
 
 1;
-
@@ -1,9 +1,9 @@
-# Testing magical scalars (using tied scalar)
-# Note that XSUBs do not handle magical scalars automatically.
-
 use strict;
 use warnings;
 
+# Testing magical scalars (using tied scalar)
+# Note that XSUBs do not handle magical scalars automatically.
+
 use Test::More;
 use Test::Fatal;
 
@@ -1,14 +1,11 @@
 use strict;
 use warnings;
 
-use FindBin;
-use File::Spec::Functions;
-
 use Test::More;
 
 use Class::Load qw(is_class_loaded);
 
-use lib catdir($FindBin::Bin, 'lib');
+use lib 't/cmop/lib';
 
 {
     package Foo;
@@ -71,7 +71,7 @@ ok( $Foo->has_method('cake'), '... got the constant method stub cake' );
 
 my $foo = sub {'Foo::foo'};
 
-ok( !UNIVERSAL::isa( $foo, 'Class::MOP::Method' ),
+ok( !Scalar::Util::blessed($foo),
     '... our method is not yet blessed' );
 
 is( exception {
@@ -1,15 +1,12 @@
 use strict;
 use warnings;
 
-use FindBin;
-use File::Spec::Functions;
-
 use Test::More;
 use Test::Fatal;
 
 use Class::MOP;
 
-use lib catdir($FindBin::Bin, 'lib');
+use lib 't/cmop/lib';
 
 # make sure the Class::MOP::Class->meta does the right thing
 
@@ -2,7 +2,6 @@ use strict;
 use warnings;
 
 use Test::More;
-
 use Test::Requires {
     'SUPER' => 1.10, # skip all if not installed
 };
@@ -344,6 +344,7 @@ is_deeply(
         Class::MOP::Module
         Class::MOP::Package
         Class::MOP::Object
+        Class::MOP::Mixin
         Class::MOP::Mixin::HasAttributes
         Class::MOP::Mixin
         Class::MOP::Mixin::HasMethods
@@ -9,9 +9,7 @@ use Test::Fatal;
 use File::Spec;
 use File::Temp 'tempdir';
 
-use Test::Requires {
-    'Module::Refresh' => '0.01', # skip all if not installed
-};
+use Test::Requires 'Module::Refresh';   # skip all if not installed
 
 =pod
 
@@ -5,7 +5,7 @@ use Test::More;
 
 use Test::Requires {
     'DBM::Deep' => '1.0003', # skip all if not installed
-    'DateTime::Format::MySQL' => '0.01',
+    'DateTime::Format::MySQL' => '0',
 };
 
 use Test::Fatal;
@@ -12,10 +12,7 @@ Pretty well if I do say so myself :)
 
 =cut
 
-use Test::Requires {
-    'Declare::Constraints::Simple' => '0.01', # skip all if not installed
-};
-
+use Test::Requires 'Declare::Constraints::Simple';  # skip all if not installed
 use Test::Fatal;
 
 {
@@ -13,10 +13,7 @@ but it is not completely horrid either.
 
 =cut
 
-use Test::Requires {
-    'Test::Deep' => '0.01', # skip all if not installed
-};
-
+use Test::Requires 'Test::Deep';    # skip all if not installed
 use Test::Fatal;
 
 {
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -61,7 +60,7 @@ use Test::Fatal;
         "... must supply all the required attribute");
 
     is(
-        $exception->attribute->name,
+        $exception->attribute_name,
         'baz',
         "... must supply all the required attribute");
 
@@ -217,7 +216,7 @@ use Test::Fatal;
     }
 
     my $exception = exception {
-	Foo->new;
+        Foo->new;
     };
 
     like(
@@ -232,12 +231,12 @@ use Test::Fatal;
 
     isa_ok(
         $exception->instance,
-	'Foo',
+        'Foo',
         "Correct error when a builder method is not present");
 
     is(
-	$exception->attribute->name,
-	'baz',
+        $exception->attribute->name,
+        'baz',
         "Correct error when a builder method is not present");
 
     is(
@@ -249,12 +248,12 @@ use Test::Fatal;
 # tests for CannotDelegateWithoutIsa
 {
     my $exception = exception {
-	package Foo;
-	use Moose;
-	has 'bar' => (
-	    is      => 'ro',
-	    handles => qr/baz/,
-	);
+        package Foo;
+        use Moose;
+        has 'bar' => (
+            is      => 'ro',
+            handles => qr/baz/,
+        );
     };
 
     like(
@@ -270,11 +269,11 @@ use Test::Fatal;
 
 {
     my $exception = exception {
-	package Foo;
-	use Moose;
-	has bar => (
-	    is         => 'ro',
-	    auto_deref => 1,
+        package Foo;
+        use Moose;
+        has bar => (
+            is         => 'ro',
+            auto_deref => 1,
         );
     };
 
@@ -289,20 +288,20 @@ use Test::Fatal;
         "You cannot auto-dereference without specifying a type constraint on attribute");
 
     is(
-	$exception->attribute_name,
-	'bar',
+        $exception->attribute_name,
+        'bar',
         "You cannot auto-dereference without specifying a type constraint on attribute");
 }
 
 {
     my $exception = exception {
-	package Foo;
-	use Moose;
-	has 'bar' => (
-	    is       => 'ro',
-	    required => 1,
-	    init_arg => undef,
-	);
+        package Foo;
+        use Moose;
+        has 'bar' => (
+            is       => 'ro',
+            required => 1,
+            init_arg => undef,
+        );
     };
 
     like(
@@ -318,12 +317,12 @@ use Test::Fatal;
 
 {
     my $exception = exception {
-	package Foo;
-	use Moose;
-	has 'bar' => (
-	    is   => 'ro',
-	    lazy => 1,
-	);
+        package Foo;
+        use Moose;
+        has 'bar' => (
+            is   => 'ro',
+            lazy => 1,
+        );
     };
 
     like(
@@ -339,13 +338,13 @@ use Test::Fatal;
 
 {
     my $exception = exception {
-	package Foo;
-	use Moose;
-	has 'bar' => (
-	    is         => 'ro',
-	    isa        => 'Int',
-	    auto_deref => 1,
-	);
+        package Foo;
+        use Moose;
+        has 'bar' => (
+            is         => 'ro',
+            isa        => 'Int',
+            auto_deref => 1,
+        );
     };
 
     like(
@@ -361,13 +360,13 @@ use Test::Fatal;
 
 {
     my $exception = exception {
-	package Foo;
-	use Moose;
-	has 'bar' => (
-	    is         => 'ro',
-	    lazy_build => 1,
-	    default    => 1,
-	);
+        package Foo;
+        use Moose;
+        has 'bar' => (
+            is         => 'ro',
+            lazy_build => 1,
+            default    => 1,
+        );
     };
 
     like(
@@ -383,15 +382,15 @@ use Test::Fatal;
 
 {
     my $exception = exception {
-	package Delegator;
-	use Moose;
+        package Delegator;
+        use Moose;
 
-	sub full { 1 }
-	sub stub;
+        sub full { 1 }
+        sub stub;
 
-	has d1 => (
-	    isa     => 'X',
-	    handles => ['full'],
+        has d1 => (
+            isa     => 'X',
+            handles => ['full'],
         );
     };
 
@@ -406,26 +405,26 @@ use Test::Fatal;
         "got an error when trying to declare a delegation method that overwrites a local method");
 
     $exception = exception {
-	package Delegator;
-	use Moose;
+        package Delegator;
+        use Moose;
 
-	has d2 => (
-	    isa     => 'X',
-	    handles => ['stub'],
+        has d2 => (
+            isa     => 'X',
+            handles => ['stub'],
         );
     };
 
     is(
-	$exception,
+        $exception,
         undef,
         'no error when trying to declare a delegation method that overwrites a stub method');
 }
 
 {
     {
-	package Test;
-	use Moose;
-	has 'foo' => (
+        package Test;
+        use Moose;
+        has 'foo' => (
             is        => 'rw',
             clearer   => 'clear_foo',
             predicate => 'foo',
@@ -434,29 +433,29 @@ use Test::Fatal;
     }
 
     my $exception = exception {
-	package Test2;
-	use Moose;
-	extends 'Test';
-	has '+foo' => (
-	    clearer   => 'clear_foo1',
-	);
+        package Test2;
+        use Moose;
+        extends 'Test';
+        has '+foo' => (
+            clearer   => 'clear_foo1',
+        );
     };
 
     like(
-	$exception,
-	qr/\QIllegal inherited options => (clearer)/,
-	"Illegal inherited option is given");
+        $exception,
+        qr/\QIllegal inherited options => (clearer)/,
+        "Illegal inherited option is given");
 
     isa_ok(
-	$exception,
-	"Moose::Exception::IllegalInheritedOptions",
-	"Illegal inherited option is given");
+        $exception,
+        "Moose::Exception::IllegalInheritedOptions",
+        "Illegal inherited option is given");
 
     $exception = exception {
-	package Test3;
-	use Moose;
-	extends 'Test';
-	has '+foo' => (
+        package Test3;
+        use Moose;
+        extends 'Test';
+        has '+foo' => (
             clearer   => 'clear_foo1',
             predicate => 'xyz',
             accessor  => 'bar2',
@@ -464,27 +463,27 @@ use Test::Fatal;
     };
 
     like(
-	$exception,
-	qr/\QIllegal inherited options => (accessor, clearer, predicate)/,
-	"Illegal inherited option is given");
+        $exception,
+        qr/\QIllegal inherited options => (accessor, clearer, predicate)/,
+        "Illegal inherited option is given");
 }
 
 # tests for exception thrown is Moose::Meta::Attribute::set_value
 {
     my $exception = exception {
-	{
-	    package Foo1;
-	    use Moose;
-	    has 'bar' => (
-		is       => 'ro',
-		required => 1,
-	    );
-	}
-
-	my $instance = Foo1->new(bar => "test");
-	my $bar_attr = Foo1->meta->get_attribute('bar');
-	my $bar_writer = $bar_attr->get_write_method_ref;
-	$bar_writer->($instance);
+        {
+            package Foo1;
+            use Moose;
+            has 'bar' => (
+                is       => 'ro',
+                required => 1,
+            );
+        }
+
+        my $instance = Foo1->new(bar => "test");
+        my $bar_attr = Foo1->meta->get_attribute('bar');
+        my $bar_writer = $bar_attr->get_write_method_ref;
+        $bar_writer->($instance);
     };
 
     like(
@@ -498,7 +497,7 @@ use Test::Fatal;
         "... must supply all the required attribute");
 
     is(
-        $exception->attribute->name,
+        $exception->attribute_name,
         'bar',
         "... must supply all the required attribute");
 
@@ -510,123 +509,123 @@ use Test::Fatal;
 
 {
     my $exception = exception {
-	{
-	    package Foo1;
-	    use Moose;
-	    has 'bar' => (
+        {
+            package Foo1;
+            use Moose;
+            has 'bar' => (
                 is       => 'ro',
                 handles  => \*STDIN,
-	    );
-	}
+            );
+        }
     };
 
     my $handle = \*STDIN;
 
     like(
-	$exception,
-	qr/\QUnable to canonicalize the 'handles' option with $handle/,
-	"handles doesn't take file handle");
+        $exception,
+        qr/\QUnable to canonicalize the 'handles' option with $handle/,
+        "handles doesn't take file handle");
         #Unable to canonicalize the 'handles' option with GLOB(0x109d0b0)
 
     isa_ok(
-	$exception,
-	"Moose::Exception::UnableToCanonicalizeHandles",
-	"handles doesn't take file handle");
+        $exception,
+        "Moose::Exception::UnableToCanonicalizeHandles",
+        "handles doesn't take file handle");
 
 }
 
 {
     my $exception = exception {
-	{
-	    package Foo1;
-	    use Moose;
-	    has 'bar' => (
+        {
+            package Foo1;
+            use Moose;
+            has 'bar' => (
                 is       => 'ro',
                 handles  => 'Foo1',
-	    );
-	}
+            );
+        }
     };
 
     like(
-	$exception,
-	qr/\QUnable to canonicalize the 'handles' option with Foo1 because its metaclass is not a Moose::Meta::Role/,
-	"'Str' given to handles should be a metaclass of Moose::Meta::Role");
+        $exception,
+        qr/\QUnable to canonicalize the 'handles' option with Foo1 because its metaclass is not a Moose::Meta::Role/,
+        "'Str' given to handles should be a metaclass of Moose::Meta::Role");
 
     isa_ok(
-	$exception,
-	"Moose::Exception::UnableToCanonicalizeNonRolePackage",
-	"'Str' given to handles should be a metaclass of Moose::Meta::Role");
+        $exception,
+        "Moose::Exception::UnableToCanonicalizeNonRolePackage",
+        "'Str' given to handles should be a metaclass of Moose::Meta::Role");
 }
 
 {
     my $exception = exception {
-	{
-	    package Foo1;
-	    use Moose;
-	    has 'bar' => (
+        {
+            package Foo1;
+            use Moose;
+            has 'bar' => (
                 is      => 'ro',
                 isa     => 'Not::Loaded',
                 handles => qr/xyz/,
             );
-	}
+        }
     };
 
     like(
-	$exception,
-	qr/\QThe bar attribute is trying to delegate to a class which has not been loaded - Not::Loaded/,
-	"You cannot delegate to a class which has not yet loaded");
+        $exception,
+        qr/\QThe bar attribute is trying to delegate to a class which has not been loaded - Not::Loaded/,
+        "You cannot delegate to a class which has not yet loaded");
 
     isa_ok(
-	$exception,
-	"Moose::Exception::DelegationToAClassWhichIsNotLoaded",
-	"You cannot delegate to a class which has not yet loaded");
+        $exception,
+        "Moose::Exception::DelegationToAClassWhichIsNotLoaded",
+        "You cannot delegate to a class which has not yet loaded");
 
     is(
         $exception->attribute->name,
-	'bar',
-	"You cannot delegate to a class which has not yet loaded"
+        'bar',
+        "You cannot delegate to a class which has not yet loaded"
     );
 
     is(
         $exception->class_name,
-	'Not::Loaded',
-	"You cannot delegate to a class which has not yet loaded"
+        'Not::Loaded',
+        "You cannot delegate to a class which has not yet loaded"
     );
 }
 
 {
     my $exception = exception {
-	{
-	    package Foo1;
-	    use Moose;
-	    has bar => (
+        {
+            package Foo1;
+            use Moose;
+            has bar => (
                 is      => 'ro',
                 does    => 'Role',
                 handles => qr/Role/,
             );
-	}
+        }
     };
 
     like(
-	$exception,
-	qr/\QThe bar attribute is trying to delegate to a role which has not been loaded - Role/,
-	"You cannot delegate to a role which has not yet loaded");
+        $exception,
+        qr/\QThe bar attribute is trying to delegate to a role which has not been loaded - Role/,
+        "You cannot delegate to a role which has not yet loaded");
 
     isa_ok(
-	$exception,
-	"Moose::Exception::DelegationToARoleWhichIsNotLoaded",
-	"You cannot delegate to a role which has not yet loaded");
+        $exception,
+        "Moose::Exception::DelegationToARoleWhichIsNotLoaded",
+        "You cannot delegate to a role which has not yet loaded");
 
     is(
         $exception->attribute->name,
-	'bar',
-	"You cannot delegate to a role which has not yet loaded"
+        'bar',
+        "You cannot delegate to a role which has not yet loaded"
     );
 
     is(
         $exception->role_name,
-	'Role',
-	"You cannot delegate to a role which has not yet loaded"
+        'Role',
+        "You cannot delegate to a role which has not yet loaded"
     );
 }
 
@@ -641,7 +640,7 @@ use Test::Fatal;
                 isa     => 'Int',
                 handles => qr/xyz/,
             );
-	}
+        }
     };
 
     like(
@@ -749,43 +748,43 @@ use Test::Fatal;
         "You cannot coerce a type unless coercion is supported by that type");
 
     is(
-        $exception->type->name,
+        $exception->type_name,
         'HexNum',
         "You cannot coerce a type unless coercion is supported by that type");
 }
 
 {
     {
-	package Parent;
-	use Moose;
+        package Parent;
+        use Moose;
 
-	has foo => (
-	    is      => 'rw',
-	    isa     => 'Num',
-	    default => 5.5,
+        has foo => (
+            is      => 'rw',
+            isa     => 'Num',
+            default => 5.5,
         );
     }
 
     {
-	package Child;
-	use Moose;
-	extends 'Parent';
+        package Child;
+        use Moose;
+        extends 'Parent';
 
-	has '+foo' => (
-	    isa     => 'Int',
-	    default => 100,
+        has '+foo' => (
+            isa     => 'Int',
+            default => 100,
        );
     }
 
     my $foo = Child->new;
     my $exception = exception {
-	$foo->foo(10.5);
+        $foo->foo(10.5);
     };
 
     like(
-	$exception,
-	qr/\QAttribute (foo) does not pass the type constraint because: Validation failed for 'Int' with value 10.5/,
-	"10.5 is not an Int");
+        $exception,
+        qr/\QAttribute (foo) does not pass the type constraint because: Validation failed for 'Int' with value 10.5/,
+        "10.5 is not an Int");
 
     isa_ok(
         $exception,
@@ -793,15 +792,15 @@ use Test::Fatal;
         "10.5 is not an Int");
 
     is(
-	$exception->class_name,
-	"Child",
-	"10.5 is not an Int");
+        $exception->class_name,
+        "Child",
+        "10.5 is not an Int");
 }
 
 {
     {
-	package Foo2;
-	use Moose;
+        package Foo2;
+        use Moose;
 
         has a4 => (
             traits  => ['Array'],
@@ -939,7 +938,7 @@ use Test::Fatal;
         "Cannot auto-deref with 'Int'");
 
     is(
-        $exception->type->name,
+        $exception->type_name,
         "Int",
         "Cannot auto-deref with 'Int'");
 }
@@ -950,12 +949,12 @@ use Test::Fatal;
         my $int = find_type_constraint('Int');
         my $from_parameterizable = $parameterizable->parameterize($int);
 
-	{
+        {
             package Parameterizable;
             use Moose;
 
             has from_parameterizable => ( is => 'rw', isa => $from_parameterizable );
-	}
+        }
     }
 
     my $params = Parameterizable->new();
@@ -964,8 +963,8 @@ use Test::Fatal;
     };
 
     like(
-	$exception,
-	qr/\QAttribute (from_parameterizable) does not pass the type constraint because: Validation failed for 'ParameterizableArrayRef[Int]'\E with value "?Hello"?/,
+        $exception,
+        qr/\QAttribute (from_parameterizable) does not pass the type constraint because: Validation failed for 'ParameterizableArrayRef[Int]'\E with value "?Hello"?/,
         "'Hello' is a Str");
 
     isa_ok(
@@ -974,8 +973,8 @@ use Test::Fatal;
         "'Hello' is a Str");
 
     is(
-	$exception->class_name,
-	"Parameterizable",
+        $exception->class_name,
+        "Parameterizable",
         "'Hello' is a Str");
 
     is(
@@ -1058,7 +1057,7 @@ use Test::Fatal;
         "passing no value to set_foo_required");
 
     is(
-        $exception->attribute->name,
+        $exception->attribute_name,
         'foo_required',
         "passing no value to set_foo_required");
 
@@ -1167,29 +1166,29 @@ use Test::Fatal;
 
 {
     my $exception = exception {
-	{
-	    package Foo1;
-	    use Moose;
-	    has bar => (
+        {
+            package Foo1;
+            use Moose;
+            has bar => (
                 is       => 'ro',
                 required => 1,
                 isa      => 'Int',
-	    );
-	}
+            );
+        }
 
-	Foo1->new(bar => "test");
+        Foo1->new(bar => "test");
     };
 
     like(
-	$exception,
-	qr/^Attribute \(bar\) does not pass the type constraint because: Validation failed for 'Int' with value "?test"?/,
-	"bar is an 'Int' and 'Str' is given");
+        $exception,
+        qr/^Attribute \(bar\) does not pass the type constraint because: Validation failed for 'Int' with value "?test"?/,
+        "bar is an 'Int' and 'Str' is given");
         #Attribute (bar) does not pass the type constraint because: Validation failed for 'Int' with value "test"
 
     isa_ok(
-	$exception,
-	"Moose::Exception::ValidationFailedForTypeConstraint",
-	"bar is an 'Int' and 'Str' is given");
+        $exception,
+        "Moose::Exception::ValidationFailedForTypeConstraint",
+        "bar is an 'Int' and 'Str' is given");
 }
 
 done_testing;
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -9,7 +8,7 @@ use Moose();
 
 {
     my $exception =  exception {
-	my $class = Class::MOP::Attribute->new;
+        my $class = Class::MOP::Attribute->new;
     };
 
     like(
@@ -57,39 +56,39 @@ use Moose();
 
 {
     my $exception =  exception {
-	Class::MOP::Attribute->new( "foo", ( default => [1] ) );
+        Class::MOP::Attribute->new( "foo", ( default => [1] ) );
     };
 
     like(
         $exception,
         qr/\QReferences are not allowed as default values, you must wrap the default of 'foo' in a CODE reference (ex: sub { [] } and not [])/,
-	"default value can't take references");
+        "default value can't take references");
 
     isa_ok(
         $exception,
         "Moose::Exception::ReferencesAreNotAllowedAsDefault",
-	"default value can't take references");
+        "default value can't take references");
 
     is(
         $exception->attribute_name,
         "foo",
-	"default value can't take references");
+        "default value can't take references");
 }
 
 {
     my $exception =  exception {
-	Class::MOP::Attribute->new( "foo", ( required => 1, init_arg => undef ) );
+        Class::MOP::Attribute->new( "foo", ( required => 1, init_arg => undef ) );
     };
 
     like(
         $exception,
         qr/A required attribute must have either 'init_arg', 'builder', or 'default'/,
-	"no 'init_arg', 'builder' or 'default' is given");
+        "no 'init_arg', 'builder' or 'default' is given");
 
     isa_ok(
         $exception,
         "Moose::Exception::RequiredAttributeLacksInitialization",
-	"no 'init_arg', 'builder' or 'default' is given");
+        "no 'init_arg', 'builder' or 'default' is given");
 }
 
 {
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -9,10 +8,10 @@ use Moose();
 
 {
     my $exception = exception {
-	package Foo;
-	use Moose;
-	__PACKAGE__->meta->make_immutable;
-	__PACKAGE__->meta->superclasses("Bar");
+        package Foo;
+        use Moose;
+        __PACKAGE__->meta->make_immutable;
+        __PACKAGE__->meta->superclasses("Bar");
     };
 
     like(
@@ -33,26 +32,26 @@ use Moose();
 
 {
     my $exception = exception {
-	package Foo;
-	use Moose;
-	__PACKAGE__->meta->make_immutable;
-	__PACKAGE__->meta->add_method( foo => sub { "foo" } );
+        package Foo;
+        use Moose;
+        __PACKAGE__->meta->make_immutable;
+        __PACKAGE__->meta->add_method( foo => sub { "foo" } );
     };
 
     like(
         $exception,
         qr/The 'add_method' method cannot be called on an immutable instance/,
-	"calling 'add_method' on an immutable instance");
+        "calling 'add_method' on an immutable instance");
 
     isa_ok(
         $exception,
         "Moose::Exception::CallingMethodOnAnImmutableInstance",
-	"calling 'add_method' on an immutable instance");
+        "calling 'add_method' on an immutable instance");
 
     is(
         $exception->method_name,
         "add_method",
-	"calling 'add_method' on an immutable instance");
+        "calling 'add_method' on an immutable instance");
 }
 
 done_testing;
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -9,7 +8,7 @@ use Moose();
 
 {
     my $exception =  exception {
-	my $class = Class::MOP::Class::initialize;
+        my $class = Class::MOP::Class::initialize;
     };
 
     like(
@@ -25,7 +24,7 @@ use Moose();
 
 {
     my $exception =  exception {
-	my $class = Class::MOP::Class::create("Foo" => ( superclasses => ('foo') ));
+        my $class = Class::MOP::Class::create("Foo" => ( superclasses => ('foo') ));
     };
 
     like(
@@ -39,15 +38,15 @@ use Moose();
         "an Array is of superclasses is passed");
 
     is(
-	$exception->class,
-	'Foo',
+        $exception->class,
+        'Foo',
         "an Array is of superclasses is passed");
 }
 
 
 {
     my $exception =  exception {
-	my $class = Class::MOP::Class::create("Foo" => ( attributes => ('foo') ));
+        my $class = Class::MOP::Class::create("Foo" => ( attributes => ('foo') ));
     };
 
     like(
@@ -61,14 +60,14 @@ use Moose();
         "an Array is of attributes is passed");
 
     is(
-	$exception->class,
-	'Foo',
+        $exception->class,
+        'Foo',
         "an Array is of attributes is passed");
 }
 
 {
     my $exception =  exception {
-	my $class = Class::MOP::Class::create("Foo" => ( methods => ('foo') ) );
+        my $class = Class::MOP::Class::create("Foo" => ( methods => ('foo') ) );
     };
 
     like(
@@ -82,8 +81,8 @@ use Moose();
         "a Hash is of methods is passed");
 
     is(
-	$exception->class,
-	'Foo',
+        $exception->class,
+        'Foo',
         "a Hash is of methods is passed");
 }
 
@@ -104,8 +103,8 @@ use Moose();
         "no method name given to find_method_by_name");
 
     is(
-	$exception->class->name,
-	'Foo',
+        $exception->class_name,
+        'Foo',
         "no method name given to find_method_by_name");
 }
 
@@ -126,8 +125,8 @@ use Moose();
         "no method name given to find_all_methods_by_name");
 
     is(
-	$exception->class->name,
-	'Foo',
+        $exception->class_name,
+        'Foo',
         "no method name given to find_all_methods_by_name");
 }
 
@@ -148,8 +147,8 @@ use Moose();
         "no method name given to find_next_method_by_name");
 
     is(
-	$exception->class->name,
-	'Foo',
+        $exception->class_name,
+        'Foo',
         "no method name given to find_next_method_by_name");
 }
 
@@ -157,178 +156,178 @@ use Moose();
     my $class = Class::MOP::Class->create("Foo");
     my $foo = "foo";
     my $exception =  exception {
-	$class->clone_object( $foo );
+        $class->clone_object( $foo );
     };
 
     like(
         $exception,
         qr/\QYou must pass an instance of the metaclass (Foo), not (foo)/,
-	"clone_object expects an instance of the metaclass");
+        "clone_object expects an instance of the metaclass");
 
     isa_ok(
         $exception,
         "Moose::Exception::CloneObjectExpectsAnInstanceOfMetaclass",
-	"clone_object expects an instance of the metaclass");
+        "clone_object expects an instance of the metaclass");
 
     is(
-	$exception->class->name,
-	'Foo',
-	"clone_object expects an instance of the metaclass");
+        $exception->class_name,
+        'Foo',
+        "clone_object expects an instance of the metaclass");
 
    is(
-	$exception->instance,
-	'foo',
-	"clone_object expects an instance of the metaclass");
+        $exception->instance,
+        'foo',
+        "clone_object expects an instance of the metaclass");
 }
 
 {
     {
-	package Foo;
-	use Moose;
+        package Foo;
+        use Moose;
     }
     {
-	package Foo2;
-	use Moose;
+        package Foo2;
+        use Moose;
     }
     my $foo2 = Foo2->new;
     my $exception =  exception {
-	Foo->meta->rebless_instance( $foo2 );
+        Foo->meta->rebless_instance( $foo2 );
     };
 
     like(
         $exception,
         qr/\QYou may rebless only into a subclass of (Foo2), of which (Foo) isn't./,
-	"you can rebless only into subclass");
+        "you can rebless only into subclass");
 
     isa_ok(
         $exception,
         "Moose::Exception::CanReblessOnlyIntoASubclass",
-	"you can rebless only into subclass");
+        "you can rebless only into subclass");
 
     is(
-	$exception->class->name,
-	'Foo',
-	"you can rebless only into subclass");
+        $exception->class_name,
+        'Foo',
+        "you can rebless only into subclass");
 
    is(
-	$exception->instance,
-	$foo2,
-	"you can rebless only into subclass");
+        $exception->instance,
+        $foo2,
+        "you can rebless only into subclass");
 }
 
 {
     {
-	package Foo;
-	use Moose;
+        package Foo;
+        use Moose;
     }
     {
-	package Foo2;
-	use Moose;
+        package Foo2;
+        use Moose;
     }
     my $foo = Foo->new;
     my $exception =  exception {
-	Foo2->meta->rebless_instance_back( $foo );
+        Foo2->meta->rebless_instance_back( $foo );
     };
 
     like(
         $exception,
         qr/\QYou may rebless only into a superclass of (Foo), of which (Foo2) isn't./,
-	"you can rebless only into superclass");
+        "you can rebless only into superclass");
 
     isa_ok(
         $exception,
         "Moose::Exception::CanReblessOnlyIntoASuperclass",
-	"you can rebless only into superclass");
+        "you can rebless only into superclass");
 
     is(
-	$exception->instance,
-	$foo,
-	"you can rebless only into superclass");
+        $exception->instance,
+        $foo,
+        "you can rebless only into superclass");
 
    is(
-	$exception->class->name,
-	"Foo2",
-	"you can rebless only into superclass");
+        $exception->class_name,
+        "Foo2",
+        "you can rebless only into superclass");
 }
 
 {
     {
-	package Foo;
-	use Moose;
+        package Foo;
+        use Moose;
     }
     my $exception =  exception {
-	Foo->meta->add_before_method_modifier;
+        Foo->meta->add_before_method_modifier;
     };
 
     like(
         $exception,
         qr/You must pass in a method name/,
-	"no method name passed to method modifier");
+        "no method name passed to method modifier");
 
     isa_ok(
         $exception,
         "Moose::Exception::MethodModifierNeedsMethodName",
-	"no method name passed to method modifier");
+        "no method name passed to method modifier");
 
     is(
-	$exception->class->name,
-	"Foo",
-	"no method name passed to method modifier");
+        $exception->class_name,
+        "Foo",
+        "no method name passed to method modifier");
 }
 
 {
     {
-	package Foo;
-	use Moose;
+        package Foo;
+        use Moose;
     }
     my $exception =  exception {
-	Foo->meta->add_after_method_modifier;
+        Foo->meta->add_after_method_modifier;
     };
 
     like(
         $exception,
         qr/You must pass in a method name/,
-	"no method name passed to method modifier");
+        "no method name passed to method modifier");
 
     isa_ok(
         $exception,
         "Moose::Exception::MethodModifierNeedsMethodName",
-	"no method name passed to method modifier");
+        "no method name passed to method modifier");
 
     is(
-	$exception->class->name,
-	"Foo",
-	"no method name passed to method modifier");
+        $exception->class_name,
+        "Foo",
+        "no method name passed to method modifier");
 }
 
 {
     {
-	package Foo;
-	use Moose;
+        package Foo;
+        use Moose;
     }
     my $exception =  exception {
-	Foo->meta->add_around_method_modifier;
+        Foo->meta->add_around_method_modifier;
     };
 
     like(
         $exception,
         qr/You must pass in a method name/,
-	"no method name passed to method modifier");
+        "no method name passed to method modifier");
 
     isa_ok(
         $exception,
         "Moose::Exception::MethodModifierNeedsMethodName",
-	"no method name passed to method modifier");
+        "no method name passed to method modifier");
 
     is(
-	$exception->class->name,
-	"Foo",
-	"no method name passed to method modifier");
+        $exception->class_name,
+        "Foo",
+        "no method name passed to method modifier");
 }
 
 {
     my $exception =  exception {
-	my $class = Class::MOP::Class->_construct_class_instance;
+        my $class = Class::MOP::Class->_construct_class_instance;
     };
 
     like(
@@ -345,119 +344,119 @@ use Moose();
 {
     my $class = Class::MOP::Class->create("Foo");
     my $exception =  exception {
-	$class->add_before_method_modifier("foo");
+        $class->add_before_method_modifier("foo");
     };
 
     like(
         $exception,
         qr/The method 'foo' was not found in the inheritance hierarchy for Foo/,
-	'method "foo" is not defined in class "Foo"');
+        'method "foo" is not defined in class "Foo"');
 
     isa_ok(
         $exception,
         "Moose::Exception::MethodNameNotFoundInInheritanceHierarchy",
-	'method "foo" is not defined in class "Foo"');
+        'method "foo" is not defined in class "Foo"');
 
     is(
-	$exception->class->name,
-	'Foo',
-	'method "foo" is not defined in class "Foo"');
+        $exception->class_name,
+        'Foo',
+        'method "foo" is not defined in class "Foo"');
 
    is(
-	$exception->method_name,
-	'foo',
-	'method "foo" is not defined in class "Foo"');
+        $exception->method_name,
+        'foo',
+        'method "foo" is not defined in class "Foo"');
 }
 
 {
     {
-	package Bar;
-	use Moose;
+        package Bar;
+        use Moose;
     }
     my $bar = Bar->new;
     my $class = Class::MOP::Class->create("Foo");
     my $exception =  exception {
-	$class->new_object( ( __INSTANCE__ => $bar ) );
+        $class->new_object( ( __INSTANCE__ => $bar ) );
     };
 
     like(
         $exception,
         qr/\QObjects passed as the __INSTANCE__ parameter must already be blessed into the correct class, but $bar is not a Foo/,
-	"__INSTANCE__ is not blessed correctly");
+        "__INSTANCE__ is not blessed correctly");
         #Objects passed as the __INSTANCE__ parameter must already be blessed into the correct class, but Bar=HASH(0x2d77528) is not a Foo
 
     isa_ok(
         $exception,
         "Moose::Exception::InstanceBlessedIntoWrongClass",
-	"__INSTANCE__ is not blessed correctly");
+        "__INSTANCE__ is not blessed correctly");
 
     is(
-	$exception->class->name,
-	'Foo',
-	"__INSTANCE__ is not blessed correctly");
+        $exception->class_name,
+        'Foo',
+        "__INSTANCE__ is not blessed correctly");
 
    is(
-	$exception->instance,
-	$bar,
-	"__INSTANCE__ is not blessed correctly");
+        $exception->instance,
+        $bar,
+        "__INSTANCE__ is not blessed correctly");
 }
 
 {
     my $class = Class::MOP::Class->create("Foo");
     my $array = [1,2,3];
     my $exception =  exception {
-	$class->new_object( ( __INSTANCE__ => $array ) );
+        $class->new_object( ( __INSTANCE__ => $array ) );
     };
 
     like(
         $exception,
         qr/\QThe __INSTANCE__ parameter must be a blessed reference, not $array/,
-	"__INSTANCE__ is not a blessed reference");
+        "__INSTANCE__ is not a blessed reference");
         #The __INSTANCE__ parameter must be a blessed reference, not ARRAY(0x1d75d40)
 
     isa_ok(
         $exception,
         "Moose::Exception::InstanceMustBeABlessedReference",
-	"__INSTANCE__ is not a blessed reference");
+        "__INSTANCE__ is not a blessed reference");
 
     is(
-	$exception->class->name,
-	'Foo',
-	"__INSTANCE__ is not a blessed reference");
+        $exception->class_name,
+        'Foo',
+        "__INSTANCE__ is not a blessed reference");
 
    is(
-	$exception->instance,
-	$array,
-	"__INSTANCE__ is not a blessed reference");
+        $exception->instance,
+        $array,
+        "__INSTANCE__ is not a blessed reference");
 }
 
 {
     my $array = [1, 2, 3];
     my $class = Class::MOP::Class->create("Foo");
     my $exception =  exception {
-	$class->_clone_instance($array);
+        $class->_clone_instance($array);
     };
 
     like(
         $exception,
         qr/\QYou can only clone instances, ($array) is not a blessed instance/,
-	"array reference was passed to _clone_instance instead of a blessed instance");
+        "array reference was passed to _clone_instance instead of a blessed instance");
         #You can only clone instances, (ARRAY(0x2162350)) is not a blessed instance
 
     isa_ok(
         $exception,
         "Moose::Exception::OnlyInstancesCanBeCloned",
-	"array reference was passed to _clone_instance instead of a blessed instance");
+        "array reference was passed to _clone_instance instead of a blessed instance");
 
     is(
-	$exception->class->name,
-	"Foo",
-	"array reference was passed to _clone_instance instead of a blessed instance");
+        $exception->class_name,
+        "Foo",
+        "array reference was passed to _clone_instance instead of a blessed instance");
 
     is(
-	$exception->instance,
-	$array,
-	"array reference was passed to _clone_instance instead of a blessed instance");
+        $exception->instance,
+        $array,
+        "array reference was passed to _clone_instance instead of a blessed instance");
 }
 
 {
@@ -481,7 +480,7 @@ use Moose();
         "Trying to inherit a Role");
 
     is(
-        $exception->class->name,
+        $exception->class_name,
         "My::Class",
         "Trying to inherit a Role");
 
@@ -515,7 +514,7 @@ use Moose();
         "immutable_trait set to undef");
 
     is(
-        $exception->class->name,
+        $exception->class_name,
         "TestClass",
         "immutable_trait set to undef");
 }
@@ -539,7 +538,7 @@ use Moose();
         "destructor_class is set to undef");
 
     is(
-        $exception->class->name,
+        $exception->class_name,
         "NoDestructorClass",
         "destructor_class is set to undef");
 }
@@ -577,7 +576,7 @@ use Moose();
             push(@superclasses, 'Foo9::SuperClass::After::Attribute');
 
             extends @superclasses;
-	}
+        }
     };
 
     like(
@@ -591,7 +590,7 @@ use Moose();
         "cannot make metaclass compatible");
 
     is(
-        $exception->class->name,
+        $exception->class_name,
         "Foo9",
         "cannot make metaclass compatible");
 }
@@ -641,7 +640,7 @@ use Moose();
             "cannot make metaclass compatible");
 
         is(
-            $exception->class->name,
+            $exception->class_name,
             "Foo::Unsafe::Sub",
             "cannot make metaclass compatible");
     }
@@ -654,7 +653,7 @@ use Moose();
                 attribute_metaclass => "Foo::Meta::Attribute",
                 attribute_metaclass => "Bar::Meta::Attribute",
             )
-	};
+        };
 
         like(
             $exception,
@@ -667,7 +666,7 @@ use Moose();
             "incompatible attribute_metaclass");
 
         is(
-            $exception->class->name,
+            $exception->class_name,
             "Foo::All::Sub::Attribute",
             "incompatible attribute_metaclass");
 
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -58,18 +57,18 @@ use Moose();
 {
     my $attr = Class::MOP::Attribute->new("Foo", ( is => 'ro'));
     my $exception = exception {
-	Class::MOP::Method::Accessor->new( accessor_type => "reader", attribute => $attr);
+        Class::MOP::Method::Accessor->new( accessor_type => "reader", attribute => $attr);
     };
 
     like(
         $exception,
         qr/\QYou must supply the package_name and name parameters/,
-	"no package_name and name is given");
+        "no package_name and name is given");
 
     isa_ok(
         $exception,
         "Moose::Exception::MustSupplyPackageNameAndName",
-	"no package_name and name is given");
+        "no package_name and name is given");
 }
 
 {
@@ -82,17 +81,17 @@ use Moose();
     like(
         $exception,
         qr/\QCould not generate inline accessor because : Can't call method "get_meta_instance" on an undefined value/,
-	"can't call get_meta_instance on an undefined value");
+        "can't call get_meta_instance on an undefined value");
 
     isa_ok(
         $exception,
         "Moose::Exception::CouldNotGenerateInlineAttributeMethod",
-	"can't call get_meta_instance on an undefined value");
+        "can't call get_meta_instance on an undefined value");
 
     is(
         $exception->option,
         "accessor",
-	"can't call get_meta_instance on an undefined value");
+        "can't call get_meta_instance on an undefined value");
 }
 
 {
@@ -105,17 +104,17 @@ use Moose();
     like(
         $exception,
         qr/\QCould not generate inline reader because : Can't call method "get_meta_instance" on an undefined value/,
-	"can't call get_meta_instance on an undefined value");
+        "can't call get_meta_instance on an undefined value");
 
     isa_ok(
         $exception,
         "Moose::Exception::CouldNotGenerateInlineAttributeMethod",
-	"can't call get_meta_instance on an undefined value");
+        "can't call get_meta_instance on an undefined value");
 
     is(
         $exception->option,
         "reader",
-	"can't call get_meta_instance on an undefined value");
+        "can't call get_meta_instance on an undefined value");
 }
 
 {
@@ -128,17 +127,17 @@ use Moose();
     like(
         $exception,
         qr/\QCould not generate inline writer because : Can't call method "get_meta_instance" on an undefined value/,
-	"can't call get_meta_instance on an undefined value");
+        "can't call get_meta_instance on an undefined value");
 
     isa_ok(
         $exception,
         "Moose::Exception::CouldNotGenerateInlineAttributeMethod",
-	"can't call get_meta_instance on an undefined value");
+        "can't call get_meta_instance on an undefined value");
 
     is(
         $exception->option,
         "writer",
-	"can't call get_meta_instance on an undefined value");
+        "can't call get_meta_instance on an undefined value");
 }
 
 {
@@ -151,17 +150,17 @@ use Moose();
     like(
         $exception,
         qr/\QCould not generate inline predicate because : Can't call method "get_meta_instance" on an undefined value/,
-	"can't call get_meta_instance on an undefined value");
+        "can't call get_meta_instance on an undefined value");
 
     isa_ok(
         $exception,
         "Moose::Exception::CouldNotGenerateInlineAttributeMethod",
-	"can't call get_meta_instance on an undefined value");
+        "can't call get_meta_instance on an undefined value");
 
     is(
         $exception->option,
         "predicate",
-	"can't call get_meta_instance on an undefined value");
+        "can't call get_meta_instance on an undefined value");
 }
 
 {
@@ -174,17 +173,17 @@ use Moose();
     like(
         $exception,
         qr/\QCould not generate inline clearer because : Can't call method "get_meta_instance" on an undefined value/,
-	"can't call get_meta_instance on an undefined value");
+        "can't call get_meta_instance on an undefined value");
 
     isa_ok(
         $exception,
         "Moose::Exception::CouldNotGenerateInlineAttributeMethod",
-	"can't call get_meta_instance on an undefined value");
+        "can't call get_meta_instance on an undefined value");
 
     is(
         $exception->option,
         "clearer",
-	"can't call get_meta_instance on an undefined value");
+        "can't call get_meta_instance on an undefined value");
 }
 
 {
@@ -195,7 +194,7 @@ use Moose();
         has 'foo' => (
             is       => 'ro',
             isa      => 'Int',
-	);
+        );
     }
 
     my $foo = Foo::ReadOnlyAccessor->new;
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -31,12 +30,12 @@ use Moose();
     like(
         $exception,
         qr/\QYou must supply the package_name and name parameters/,
-	"no package_name and name is given");
+        "no package_name and name is given");
 
     isa_ok(
         $exception,
         "Moose::Exception::MustSupplyPackageNameAndName",
-	"no package_name and name is given");
+        "no package_name and name is given");
 }
 
 {
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -15,12 +14,12 @@ use Moose();
     like(
         $exception,
         qr/\QOverriding the body of meta methods is not allowed/,
-	"body is given to Class::MOP::Method::Meta->wrap");
+        "body is given to Class::MOP::Method::Meta->wrap");
 
     isa_ok(
         $exception,
         "Moose::Exception::CannotOverrideBodyOfMetaMethods",
-	"body is given to Class::MOP::Method::Meta->wrap");
+        "body is given to Class::MOP::Method::Meta->wrap");
 }
 
 done_testing;
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -9,34 +8,34 @@ use Moose();
 
 {
     my $exception =  exception {
-	Class::MOP::Method->wrap( "foo", ( name => "Bar"));
+        Class::MOP::Method->wrap( "foo", ( name => "Bar"));
     };
 
     like(
         $exception,
         qr/\QYou must supply a CODE reference to bless, not (foo)/,
-	"first argument to wrap should be a CODE ref");
+        "first argument to wrap should be a CODE ref");
 
     isa_ok(
         $exception,
         "Moose::Exception::WrapTakesACodeRefToBless",
-	"first argument to wrap should be a CODE ref");
+        "first argument to wrap should be a CODE ref");
 }
 
 {
     my $exception =  exception {
-	Class::MOP::Method->wrap( sub { "foo" }, ());
+        Class::MOP::Method->wrap( sub { "foo" }, ());
     };
 
     like(
         $exception,
         qr/You must supply the package_name and name parameters/,
-	"no package name is given to wrap");
+        "no package name is given to wrap");
 
     isa_ok(
         $exception,
         "Moose::Exception::PackageNameAndNameParamsNotGivenToWrap",
-	"no package name is given to wrap");
+        "no package name is given to wrap");
 }
 
 done_testing;
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -22,78 +21,78 @@ use Moose();
     isa_ok(
         $exception,
         "Moose::Exception::AttributeMustBeAnClassMOPMixinAttributeCoreOrSubclass",
-	"an Array ref blessed into Bar is given to create");
+        "an Array ref blessed into Bar is given to create");
 
     is(
-	$exception->attribute,
-	$xyz,
-	"an Array ref blessed into Bar is given to create");
+        $exception->attribute,
+        $xyz,
+        "an Array ref blessed into Bar is given to create");
 }
 
 {
     my $class = Class::MOP::Class->create("Foo");
     my $exception = exception {
-	$class->has_attribute;
+        $class->has_attribute;
     };
 
     like(
         $exception,
         qr/You must define an attribute name/,
-	"attribute name is not given");
+        "attribute name is not given");
 
     isa_ok(
         $exception,
         "Moose::Exception::MustDefineAnAttributeName",
-	"attribute name is not given");
+        "attribute name is not given");
 
     is(
-	$exception->class,
-	$class,
-	"attribute name is not given");
+        $exception->class_name,
+        'Foo',
+        "attribute name is not given");
 }
 
 {
     my $class = Class::MOP::Class->create("Foo");
     my $exception = exception {
-	$class->get_attribute;
+        $class->get_attribute;
     };
 
     like(
         $exception,
         qr/You must define an attribute name/,
-	"attribute name is not given");
+        "attribute name is not given");
 
     isa_ok(
         $exception,
         "Moose::Exception::MustDefineAnAttributeName",
-	"attribute name is not given");
+        "attribute name is not given");
 
     is(
-	$exception->class,
-	$class,
-	"attribute name is not given");
+        $exception->class_name,
+        "Foo",
+        "attribute name is not given");
 }
 
 {
     my $class = Class::MOP::Class->create("Foo");
     my $exception = exception {
-	$class->remove_attribute;
+        $class->remove_attribute;
     };
 
     like(
         $exception,
         qr/You must define an attribute name/,
-	"attribute name is not given");
+        "attribute name is not given");
 
     isa_ok(
         $exception,
         "Moose::Exception::MustDefineAnAttributeName",
-	"attribute name is not given");
+        "attribute name is not given");
 
     is(
-	$exception->class,
-	$class,
-	"attribute name is not given");
+        $exception->class_name,
+        "Foo",
+        "attribute name is not given");
 }
 
 done_testing;
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -8,6 +7,7 @@ use Test::Fatal;
 {
     my $exception = exception {
         use Moose ();
+        # XXX call cmop version of throw_error here instead!
         Moose->throw_error("Hello, I am an exception object");
     };
 
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -48,7 +47,7 @@ use Test::Fatal;
         "add_role takes an instance of Moose::Meta::Role");
 
     is(
-        $exception->class->name,
+        $exception->class_name,
         'Foo',
         "add_role to Moose::Meta::Role takes instances of Moose::Meta::Role");
 
@@ -100,7 +99,7 @@ use Test::Fatal;
         "Cannot call does_role without a role name");
 
     is(
-        $exception->class->name,
+        $exception->class_name,
         'Foo',
         "Cannot call does_role without a role name");
 }
@@ -129,7 +128,7 @@ use Test::Fatal;
         "Cannot call excludes_role without a role name");
 
     is(
-        $exception->class->name,
+        $exception->class_name,
         'Foo',
         "Cannot call excludes_role without a role name");
 }
@@ -155,22 +154,20 @@ use Test::Fatal;
 
 # tests for AttributeIsRequired for inline excpetions
 {
-    use Moose::Meta::Class;
-
     {
         package Foo2;
         use Moose;
 
         has 'baz' => (
-	    is       => 'ro',
-	    isa      => 'Int',
-	    required => 1,
+            is       => 'ro',
+            isa      => 'Int',
+            required => 1,
         );
         __PACKAGE__->meta->make_immutable;
     }
 
     my $exception = exception {
-	my $test1 = Foo2->new;
+        my $test1 = Foo2->new;
     };
 
     like(
@@ -184,7 +181,7 @@ use Test::Fatal;
         "... must supply all the required attribute");
 
     is(
-        $exception->attribute->name,
+        $exception->attribute_name,
         'baz',
         "... must supply all the required attribute");
 
@@ -217,17 +214,17 @@ use Test::Fatal;
         "Class cannot extend a role");
 
     is(
-	$exception->role->name,
-	'Bar',
-	"Class cannot extend a role");
+        $exception->role_name,
+        'Bar',
+        "Class cannot extend a role");
 }
 
 {
     my $exception = exception {
-	package Foo;
-	use Moose;
-	sub foo2 {}
-	override foo2 => sub {};
+        package Foo;
+        use Moose;
+        sub foo2 {}
+        override foo2 => sub {};
     };
 
     like(
@@ -241,22 +238,22 @@ use Test::Fatal;
         "there is already a method named foo2 defined in the class, so you can't override it");
 
     is(
-	$exception->class->name,
-	'Foo',
+        $exception->class_name,
+        'Foo',
         "there is already a method named foo2 defined in the class, so you can't override it");
 
     is(
-	$exception->method->name,
-	'foo2',
+        $exception->method->name,
+        'foo2',
         "there is already a method named foo2 defined in the class, so you can't override it");
 }
 
 {
     my $exception = exception {
-	package Foo;
-	use Moose;
-	sub foo {}
-	augment foo => sub {};
+        package Foo;
+        use Moose;
+        sub foo {}
+        augment foo => sub {};
     };
 
     like(
@@ -270,38 +267,38 @@ use Test::Fatal;
         "there is already a method named foo defined in the class");
 
     is(
-	$exception->class->name,
-	'Foo',
+        $exception->class_name,
+        'Foo',
         "there is already a method named foo defined in the class");
 
     is(
-	$exception->method->name,
-	'foo',
+        $exception->method->name,
+        'foo',
         "there is already a method named foo defined in the class");
 }
 
 {
     {
-	package Test;
-	use Moose;
+        package Test;
+        use Moose;
     }
 
     my $exception = exception {
-	package Test2;
-	use Moose;
-	extends 'Test';
-	has '+bar' => ( default => 100 );
+        package Test2;
+        use Moose;
+        extends 'Test';
+        has '+bar' => ( default => 100 );
     };
 
     like(
-	$exception,
-	qr/Could not find an attribute by the name of 'bar' to inherit from in Test2/,
-	"attribute 'bar' is not defined in the super class");
+        $exception,
+        qr/Could not find an attribute by the name of 'bar' to inherit from in Test2/,
+        "attribute 'bar' is not defined in the super class");
 
     isa_ok(
-	$exception,
-	"Moose::Exception::NoAttributeFoundInSuperClass",
-	"attribute 'bar' is not defined in the super class");
+        $exception,
+        "Moose::Exception::NoAttributeFoundInSuperClass",
+        "attribute 'bar' is not defined in the super class");
 }
 
 done_testing;
@@ -0,0 +1,20 @@
+use strict;
+use warnings;
+
+use Test::More;
+use Test::Fatal;
+
+use Class::MOP;
+
+{
+    my $exception = exception {
+        Class::MOP::Mixin->_throw_exception(Legacy => message => 'oh hai');
+    };
+    ok(
+        $exception->isa('Moose::Exception::Legacy'),
+        'threw the right type',
+    );
+    is($exception->message, 'oh hai', 'got the message attribute');
+}
+
+done_testing;
@@ -1,154 +0,0 @@
-
-use strict;
-use warnings;
-
-use Test::More;
-use Test::Fatal;
-
-use Moose::Util 'throw_exception';
-
-{
-    {
-        package TestClass;
-        use Moose;
-
-        has 'foo' => (
-            is       => 'ro',
-            isa      => 'Int',
-            required => 1
-        );
-    }
-
-    my $exception = exception {
-        throw_exception( AttributeIsRequired => attribute_name => 'foo' );
-    };
-
-    like(
-        $exception,
-        qr/You need to give class or class_name or both/,
-        "please give either class or class_name");
-
-    isa_ok(
-        $exception,
-        "Moose::Exception::NeitherClassNorClassNameIsGiven",
-        "please give either class or class_name");
-
-    $exception = exception {
-        throw_exception( AttributeIsRequired => class_name => 'TestClass' );
-    };
-
-    like(
-        $exception,
-        qr/You need to give attribute or attribute_name or both/,
-        "please give either attribute or attribute_name");
-
-    isa_ok(
-        $exception,
-        "Moose::Exception::NeitherAttributeNorAttributeNameIsGiven",
-        "please give either class or class_name");
-
-    $exception = exception {
-        throw_exception( AttributeIsRequired => attribute_name => 'foo1',
-                                                attribute      => TestClass->meta->get_attribute("foo")
-                       );
-    };
-
-    like(
-        $exception,
-        qr/\Qattribute_name (foo1) does not match attribute->name (foo)/,
-        "attribute->name & attribute_name do not match");
-
-    isa_ok(
-        $exception,
-        "Moose::Exception::AttributeNamesDoNotMatch",
-        "attribute->name & attribute_name do not match");
-
-    is(
-        $exception->attribute_name,
-        "foo1",
-        "attribute->name & attribute_name do not match");
-
-    is(
-        $exception->attribute->name,
-        "foo",
-        "attribute->name & attribute_name do not match");
-
-    $exception = exception {
-        throw_exception( AttributeIsRequired => attribute => TestClass->meta->get_attribute("foo")
-                       );
-    };
-
-    like(
-        $exception,
-        qr/\QAttribute (foo) is required/,
-        "since, attribute is given, so we should get AttributeIsRequired");
-
-    isa_ok(
-        $exception,
-        "Moose::Exception::AttributeIsRequired",
-        "since, attribute is given, so we should get AttributeIsRequired");
-
-    is(
-        $exception->attribute_name,
-        "foo",
-        "since, attribute is given, so we should get AttributeIsRequired");
-
-    is(
-        $exception->attribute->name,
-        "foo",
-        "since, attribute is given, so we should get AttributeIsRequired");
-
-    is(
-        $exception->class_name,
-        "TestClass",
-        "since, attribute is given, so we should get AttributeIsRequired");
-
-    is(
-        $exception->class,
-        TestClass->meta,
-        "since, attribute is given, so we should get AttributeIsRequired");
-
-    $exception = exception {
-        throw_exception( AttributeIsRequired => class_name => 'TestClass1',
-                                                class      => TestClass->meta
-                       );
-    };
-
-    like(
-        $exception,
-        qr/You need to give attribute or attribute_name or both/,
-        "neither attribute, nor attribute_mame is given");
-
-    isa_ok(
-        $exception,
-        "Moose::Exception::NeitherAttributeNorAttributeNameIsGiven",
-        "neither attribute, nor attribute_mame is given");
-
-    $exception = exception {
-        throw_exception( AttributeIsRequired => attribute  => TestClass->meta->get_attribute("foo"),
-                                                class_name => "TestClass1"
-                       );
-    };
-
-    like(
-        $exception,
-        qr/\Qclass_name (TestClass1) does not match class->name (TestClass)/,
-        "class names do not match");
-
-    isa_ok(
-        $exception,
-        "Moose::Exception::ClassNamesDoNotMatch",
-        "class names do not match");
-
-    is(
-        $exception->class_name,
-        "TestClass1",
-        "class names do not match");
-
-    is(
-        $exception->class,
-        TestClass->meta,
-        "class names do not match");
-}
-
-done_testing;
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -30,7 +29,7 @@ use Moose::Util 'throw_exception';
     like(
         $exception,
         qr/\Qattribute_name (foo) does not match attribute->name (bar)/,
-	"you have given attribute_name as 'foo' and attribute->name as 'bar'");
+        "you have given attribute_name as 'foo' and attribute->name as 'bar'");
 
     isa_ok(
         $exception,
@@ -1,104 +0,0 @@
-
-use strict;
-use warnings;
-
-use Test::More;
-use Test::Fatal;
-
-{
-    {
-	package DoesClassRole;
-	use Moose;
-	extends 'Moose::Exception';
-	with 'Moose::Exception::Role::Class';
-    }
-
-    my $exception = exception {
-	my $doesClassRole = DoesClassRole->new;
-    };
-
-    like(
-        $exception,
-        qr/\QYou need to give class or class_name or both/,
-	"please give either class or class_name");
-
-    isa_ok(
-        $exception,
-        "Moose::Exception::NeitherClassNorClassNameIsGiven",
-        "please give either class or class_name");
-
-    {
-	package JustATestClass;
-	use Moose;
-    }
-
-    $exception = DoesClassRole->new( class => JustATestClass->meta );
-
-    ok( !$exception->is_class_name_set, "class_name is not set");
-
-    is(
-	$exception->class->name,
-	"JustATestClass",
-	"you have given class");
-
-    is(
-	$exception->class_name,
-	"JustATestClass",
-	"you have given class");
-
-    $exception = DoesClassRole->new( class_name => "JustATestClass" );
-
-    ok( !$exception->is_class_set, "class is not set");
-
-    is(
-	$exception->class_name,
-	"JustATestClass",
-	"you have given class");
-
-    is(
-	$exception->class->name,
-	"JustATestClass",
-	"you have given class");
-
-    $exception = DoesClassRole->new( class_name => "DoesClassRole",
-				     class      => DoesClassRole->meta
-                                   );
-
-    is(
-	$exception->class_name,
-	"DoesClassRole",
-	"you have given both, class & class_name");
-
-    is(
-	$exception->class->name,
-	"DoesClassRole",
-	"you have given both, class & class_name");
-
-    $exception = exception {
-        DoesClassRole->new( class_name => "Foo",
-                            class      => DoesClassRole->meta,
-                          );
-    };
-
-    like(
-        $exception,
-        qr/\Qclass_name (Foo) does not match class->name (DoesClassRole)/,
-	"you have given class_name as 'Foo' and class->name as 'DoesClassRole'");
-
-    isa_ok(
-        $exception,
-        "Moose::Exception::ClassNamesDoNotMatch",
-        "you have given class_name as 'Foo' and class->name as 'DoesClassRole'");
-
-    is(
-	$exception->class_name,
-	"Foo",
-	"you have given class_name as 'Foo' and class->name as 'DoesClassRole'");
-
-    is(
-	$exception->class->name,
-	"DoesClassRole",
-	"you have given class_name as 'Foo' and class->name as 'DoesClassRole'");
-}
-
-done_testing;
@@ -1,104 +0,0 @@
-
-use strict;
-use warnings;
-
-use Test::More;
-use Test::Fatal;
-
-{
-    {
-        package DoesRoleRole;
-        use Moose;
-        extends 'Moose::Exception';
-        with 'Moose::Exception::Role::Role';
-    }
-
-    my $exception = exception {
-        my $doesRoleRole = DoesRoleRole->new;
-    };
-
-    like(
-        $exception,
-        qr/\QYou need to give role or role_name or both/,
-        "please give either role or role_name");
-
-    isa_ok(
-        $exception,
-        "Moose::Exception::NeitherRoleNorRoleNameIsGiven",
-        "please give either role or role_name");
-
-    {
-        package JustATestRole;
-        use Moose::Role;
-    }
-
-    $exception = DoesRoleRole->new( role => JustATestRole->meta );
-
-    ok( !$exception->is_role_name_set, "role_name is not set");
-
-    is(
-        $exception->role->name,
-        "JustATestRole",
-        "you have given role");
-
-    is(
-        $exception->role_name,
-        "JustATestRole",
-        "you have given role");
-
-    $exception = DoesRoleRole->new( role_name => "JustATestRole" );
-
-    ok( !$exception->is_role_set, "role is not set");
-
-    is(
-        $exception->role_name,
-        "JustATestRole",
-        "you have given role");
-
-    is(
-        $exception->role->name,
-        "JustATestRole",
-        "you have given role");
-
-    $exception = DoesRoleRole->new( role_name => "JustATestRole",
-                                    role      => JustATestRole->meta
-                                  );
-
-    is(
-        $exception->role_name,
-        "JustATestRole",
-        "you have given both, role & role_name");
-
-    is(
-        $exception->role->name,
-        "JustATestRole",
-        "you have given both, role & role_name");
-
-    $exception = exception {
-        DoesRoleRole->new( role_name => "Foo",
-                           role      => JustATestRole->meta,
-                         );
-    };
-
-    like(
-        $exception,
-        qr/\Qrole_name (Foo) does not match role->name (JustATestRole)/,
-        "you have given role_name as 'Foo' and role->name as 'JustATestRole'");
-
-    isa_ok(
-        $exception,
-        "Moose::Exception::RoleNamesDoNotMatch",
-        "you have given role_name as 'Foo' and role->name as 'JustATestRole'");
-
-    is(
-        $exception->role_name,
-        "Foo",
-        "you have given role_name as 'Foo' and role->name as 'JustATestRole'");
-
-    is(
-        $exception->role->name,
-        "JustATestRole",
-        "you have given role_name as 'Foo' and role->name as 'JustATestRole'");
-}
-
-done_testing;
@@ -1,101 +0,0 @@
-
-use strict;
-use warnings;
-
-use Test::More;
-use Test::Fatal;
-
-{
-    {
-	package DoesTypeConstraintRole;
-	use Moose;
-	extends 'Moose::Exception';
-	with 'Moose::Exception::Role::TypeConstraint';
-    }
-
-    my $exception = exception {
-	my $doesTypeConstraintRole = DoesTypeConstraintRole->new;
-    };
-
-    like(
-        $exception,
-        qr/\QYou need to give type or type_name or both/,
-	"please give either type or type_name");
-
-    isa_ok(
-        $exception,
-        "Moose::Exception::NeitherTypeNorTypeNameIsGiven",
-	"please give either type or type_name");
-
-    my $type = Moose::Util::TypeConstraints::find_or_create_isa_type_constraint("foo");
-    $exception = DoesTypeConstraintRole->new( type => $type );
-
-    ok( !$exception->is_type_name_set, "type_name is not set");
-
-    is(
-    	$exception->type->name,
-    	"foo",
-    	"you have given type");
-
-    is(
-    	$exception->type_name,
-    	"foo",
-    	"you have given type");
-
-
-    $exception = DoesTypeConstraintRole->new( type_name => "foo" );
-
-    ok( !$exception->is_type_set, "type is not set");
-
-    is(
-    	$exception->type_name,
-    	"foo",
-    	"you have given type");
-
-    is(
-    	$exception->type->name,
-    	"foo",
-    	"you have given type");
-
-    $exception = DoesTypeConstraintRole->new( type_name => "foo",
-    				     type      => $type
-                                   );
-
-    is(
-    	$exception->type_name,
-    	"foo",
-    	"you have given both, type & type_name");
-
-    is(
-    	$exception->type->name,
-    	"foo",
-    	"you have given both, type & type_name");
-
-    $exception = exception {
-        DoesTypeConstraintRole->new( type_name => "foo",
-                                     type      => Moose::Util::TypeConstraints::find_or_create_isa_type_constraint("bar"),
-                          );
-    };
-
-    like(
-        $exception,
-        qr/\Qtype_name (foo) does not match type->name (bar)/,
-    	"you have given type_name as 'foo' and type->name as 'bar'");
-
-    isa_ok(
-        $exception,
-        "Moose::Exception::TypeNamesDoNotMatch",
-        "you have given type_name as 'foo' and type->name as 'bar'");
-
-    is(
-    	$exception->type_name,
-    	"foo",
-    	"you have given type_name as 'foo' and type->name as 'bar'");
-
-    is(
-    	$exception->type->name,
-    	"bar",
-    	"you have given type_name as 'foo' and type->name as 'bar'");
-}
-
-done_testing;
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -32,7 +31,7 @@ use Test::Fatal;
         "Roles cannot have a class as an attribute");
 
     is(
-        $exception->role->name,
+        $exception->role_name,
         'JustATestRole',
         "Roles cannot have a class as an attribute");
 
@@ -63,7 +62,7 @@ use Test::Fatal;
         "Attribute Extension is not supported in roles");
 
     is(
-        $exception->role->name,
+        $exception->role_name,
         'JustATestRole',
         "Attribute Extension is not supported in roles");
 
@@ -94,7 +93,7 @@ use Test::Fatal;
         "Cannot override bar, because it's a local method");
 
     is(
-        $exception->role->name,
+        $exception->role_name,
         'JustATestRole',
         "Cannot override bar, because it's a local method");
 
@@ -125,7 +124,7 @@ use Test::Fatal;
         "add_role to Moose::Meta::Role takes instances of Moose::Meta::Role");
 
     is(
-        $exception->role->name,
+        $exception->role_name,
         'JustATestRole',
         "add_role to Moose::Meta::Role takes instances of Moose::Meta::Role");
 
@@ -156,7 +155,7 @@ use Test::Fatal;
         "Cannot call does_role without a role name");
 
     is(
-        $exception->role->name,
+        $exception->role_name,
         'Bar',
         "Cannot call does_role without a role name");
 }
@@ -182,7 +181,7 @@ use Test::Fatal;
         "apply takes a blessed instance");
 
     is(
-        $exception->role->name,
+        $exception->role_name,
         'Bar',
         "apply takes a blessed instance");
 
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -40,7 +39,7 @@ use Test::Fatal;
             Moose::Exporter->setup_import_methods(
                 also => [ 'Moose', 'MooseX::CircularAlso' ],
             );
-	}
+        }
     };
 
     like(
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -12,8 +11,8 @@ use Moose();
         package Foo;
         use Moose;
 
-	__PACKAGE__->meta->make_immutable;
-	Foo->meta->does_role;
+        __PACKAGE__->meta->make_immutable;
+        Foo->meta->does_role;
     };
 
     like(
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -12,11 +11,11 @@ use Moose();
     use Moose;
 
     has 'foo' => (
-	is       => 'ro',
-	isa      => 'ArrayRef',
-	traits   => ['Array'],
-	handles  => {
-	    get           => 'get',
+        is       => 'ro',
+        isa      => 'ArrayRef',
+        traits   => ['Array'],
+        handles  => {
+            get           => 'get',
             first         => 'first',
             first_index   => 'first_index',
             grep          => 'grep',
@@ -27,9 +26,9 @@ use Moose();
             sort          => 'sort',
             sort_in_place => 'sort_in_place',
             splice        => 'splice'
-	},
-	required => 1
-	);
+        },
+        required => 1
+    );
 }
 
 my $foo_obj;
@@ -58,7 +57,7 @@ my $foo_obj;
 
     is(
         $exception->method_name,
-	"get",
+        "get",
         "get takes integer argument");
 }
 
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -12,11 +11,11 @@ use Moose();
     use Moose;
 
     has 'foo' => (
-	is      => 'rw',
-	isa     => 'ArrayRef[Int]',
-	traits  => ['Array'],
-	handles => { push => 'push'}
-	);
+        is      => 'rw',
+        isa     => 'ArrayRef[Int]',
+        traits  => ['Array'],
+        handles => { push => 'push'}
+        );
 }
 
 my $bar_obj = Bar->new;
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -12,14 +11,14 @@ use Moose();
     use Moose;
 
     has 'foo' => (
-	is      => 'ro',
-	isa     => 'Str',
-	traits  => ['String'],
-	handles => {
+        is      => 'ro',
+        isa     => 'Str',
+        traits  => ['String'],
+        handles => {
             match   => 'match'
-	},
-	required => 1
-	);
+        },
+        required => 1
+        );
 }
 
 my $foo_obj = Foo->new( foo => 'hello' );
@@ -52,7 +51,7 @@ my $foo_obj = Foo->new( foo => 'hello' );
 
     is(
         $exception->method_name,
-	"match",
+        "match",
         "an Array Ref passed to match");
 
     is(
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -12,14 +11,14 @@ use Moose();
     use Moose;
 
     has 'foo' => (
-	is      => 'ro',
-	isa     => 'Str',
-	traits  => ['String'],
-	handles => {
+        is      => 'ro',
+        isa     => 'Str',
+        traits  => ['String'],
+        handles => {
             replace => 'replace'
         },
-	required => 1
-	);
+        required => 1
+        );
 }
 
 my $foo_obj = Foo->new( foo => 'hello' );
@@ -57,7 +56,7 @@ my $foo_obj = Foo->new( foo => 'hello' );
 
     is(
         $exception->method_name,
-	"replace",
+        "replace",
         "an Array ref passed to replace");
 
     is(
@@ -99,7 +98,7 @@ my $foo_obj = Foo->new( foo => 'hello' );
 
     is(
         $exception->method_name,
-	"replace",
+        "replace",
         "an Array ref passed to replace");
 
     is(
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -12,14 +11,14 @@ use Moose();
     use Moose;
 
     has 'foo' => (
-	is      => 'ro',
-	isa     => 'Str',
-	traits  => ['String'],
-	handles => {
+        is      => 'ro',
+        isa     => 'Str',
+        traits  => ['String'],
+        handles => {
             substr => 'substr'
         },
-	required => 1
-	);
+        required => 1
+        );
 }
 
 my $foo_obj = Foo->new( foo => 'hello' );
@@ -56,7 +55,7 @@ my $foo_obj = Foo->new( foo => 'hello' );
 
     is(
         $exception->method_name,
-	"substr",
+        "substr",
         "substr takes integer as its first argument");
 
     is(
@@ -97,7 +96,7 @@ my $foo_obj = Foo->new( foo => 'hello' );
 
     is(
         $exception->method_name,
-	"substr",
+        "substr",
         "substr takes integer as its second argument");
 
     is(
@@ -139,7 +138,7 @@ my $foo_obj = Foo->new( foo => 'hello' );
 
     is(
         $exception->method_name,
-	"substr",
+        "substr",
         "substr takes string as its third argument");
 
     is(
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -15,12 +14,12 @@ use Moose();
     like(
         $exception,
         qr/You must pass a hash of options/,
-	"options is not a HASH ref");
+        "options is not a HASH ref");
 
     isa_ok(
         $exception,
         "Moose::Exception::MustPassAHashOfOptions",
-	"options is not a HASH ref");
+        "options is not a HASH ref");
 }
 
 {
@@ -31,12 +30,12 @@ use Moose();
     like(
         $exception,
         qr/You must supply the package_name and name parameters/,
-	"package_name and name are not given");
+        "package_name and name are not given");
 
     isa_ok(
         $exception,
         "Moose::Exception::MustSupplyPackageNameAndName",
-	"package_name and name are not given");
+        "package_name and name are not given");
 }
 
 done_testing;
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -77,10 +76,10 @@ use Moose();
     my $attr = Moose::Meta::Attribute->new("foo");
     my $exception = exception {
         Moose::Meta::Method::Delegation->new( attribute => $attr,
-					      package_name => "Foo",
-					      name => "Foo",
-					      delegate_to_method => sub {},
-					      curried_arguments => {} );
+                                              package_name => "Foo",
+                                              name => "Foo",
+                                              delegate_to_method => sub {},
+                                              curried_arguments => {} );
     };
 
     like(
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -15,12 +14,12 @@ use Moose();
     like(
         $exception,
         qr/You must pass a hash of options/,
-	"options is not a HASH ref");
+        "options is not a HASH ref");
 
     isa_ok(
         $exception,
         "Moose::Exception::MustPassAHashOfOptions",
-	"options is not a HASH ref");
+        "options is not a HASH ref");
 }
 
 {
@@ -31,12 +30,12 @@ use Moose();
     like(
         $exception,
         qr/You must supply the package_name and name parameters/,
-	"package_name and name are not given");
+        "package_name and name are not given");
 
     isa_ok(
         $exception,
         "Moose::Exception::MustSupplyPackageNameAndName",
-	"package_name and name are not given");
+        "package_name and name are not given");
 }
 
 {
@@ -47,17 +46,17 @@ use Moose();
     like(
         $exception,
         qr/The is_needed method expected a metaclass object as its arugment/,
-	"'foo' is not a metaclass");
+        "'foo' is not a metaclass");
 
     isa_ok(
         $exception,
         "Moose::Exception::MethodExpectedAMetaclassObject",
-	"'foo' is not a metaclass");
+        "'foo' is not a metaclass");
 
     is(
-	$exception->metaclass,
-	'foo',
-	"'foo' is not a metaclass");
+        $exception->metaclass,
+        'foo',
+        "'foo' is not a metaclass");
 }
 
 {
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -8,7 +7,7 @@ use Test::Fatal;
 {
     my $exception =  exception {
         package Foo;
-	use Moose;
+        use Moose;
 
         override foo => sub {}
     };
@@ -24,13 +23,13 @@ use Test::Fatal;
         "Foo class is not extending any class");
 
     is(
-	$exception->class,
-	"Moose::Meta::Method::Overridden",
+        $exception->class,
+        "Moose::Meta::Method::Overridden",
         "Foo class is not extending any class");
 
     is(
-	$exception->method_name,
-	"foo",
+        $exception->method_name,
+        "foo",
         "Foo class is not extending any class");
 }
 
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -115,7 +114,7 @@ use Moose();
         "role Foo2 & Bar2, both have an attribute named foo");
 
     is(
-        $exception->second_role->name,
+        $exception->second_role_name,
         "Bar2",
         "role Foo2 & Bar2, both have an attribute named foo");
 
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -7,6 +6,8 @@ use Test::Fatal;
 
 use Moose();
 
+use Moose::Util 'find_meta';
+
 {
     {
         package BarRole;
@@ -45,7 +46,7 @@ use Moose();
         'class FooClass excludes Role BarRole');
 
     is(
-        $exception->class,
+        find_meta($exception->class_name),
         FooClass->meta,
         'class FooClass excludes Role BarRole');
 
@@ -55,7 +56,7 @@ use Moose();
         'class FooClass excludes Role BarRole');
 
     is(
-        $exception->role,
+        find_meta($exception->role_name),
         BarRole->meta,
         'class FooClass excludes Role BarRole');
 }
@@ -98,17 +99,17 @@ use Moose();
         'Class FooClass2 does Role ExcludedRole2');
 
     is(
-        $exception->role,
+        find_meta($exception->role_name),
         BarRole2->meta,
         'Class FooClass2 does Role ExcludedRole2');
 
     is(
-        $exception->excluded_role->name,
+        $exception->excluded_role_name,
         "ExcludedRole2",
         'Class FooClass2 does Role ExcludedRole2');
 
     is(
-        $exception->excluded_role,
+        find_meta($exception->excluded_role_name),
         ExcludedRole2->meta,
         'Class FooClass2 does Role ExcludedRole2');
 
@@ -118,7 +119,7 @@ use Moose();
         'Class FooClass2 does Role ExcludedRole2');
 
     is(
-        $exception->class,
+        find_meta($exception->class_name),
         FooClass2->meta,
         'Class FooClass2 does Role ExcludedRole2');
 }
@@ -159,17 +160,17 @@ use Moose();
         "Class Bar5 already has a method named foo_in_bar");
 
     is(
-        $exception->role,
+        find_meta($exception->role_name),
         Foo5->meta,
         "Class Bar5 already has a method named foo_in_bar");
 
     is(
-        $exception->class->name,
+        $exception->class_name,
         "Bar5",
         "Class Bar5 already has a method named foo_in_bar");
 
     is(
-        $exception->class,
+        find_meta($exception->class_name),
         Bar5->meta,
         "Class Bar5 already has a method named foo_in_bar");
 
@@ -233,7 +234,7 @@ use Moose();
         'Foo::Role, Bar::Role & Baz::Role, all three has a method named foo');
 
     is(
-        $exception->class,
+        find_meta($exception->class_name),
         My::Foo::Class::Broken->meta,
         'Foo::Role, Bar::Role & Baz::Role, all three has a method named foo');
 
@@ -300,7 +301,7 @@ use Moose();
         'Foo2::Role, Bar2::Role & Baz2::Role, all three has a methods named foo & bar');
 
     is(
-        $exception->class,
+        find_meta($exception->class_name),
         My::Foo::Class::Broken2->meta,
         'Foo2::Role, Bar2::Role & Baz2::Role, all three has a methods named foo & bar');
 
@@ -353,7 +354,7 @@ use Moose();
         "foo is required by Foo3::Role, but it's not implemented by My::Foo::Class::Broken3");
 
     is(
-        $exception->class,
+        find_meta($exception->class_name),
         My::Foo::Class::Broken3->meta,
         "foo is required by Foo3::Role, but it's not implemented by My::Foo::Class::Broken3");
 
@@ -363,11 +364,6 @@ use Moose();
         "foo is required by Foo3::Role, but it's not implemented by My::Foo::Class::Broken3");
 
     is(
-        $exception->role->name,
-        'Foo3::Role|Bar3::Role|Baz3::Role',
-        "foo is required by Foo3::Role, but it's not implemented by My::Foo::Class::Broken3");
-
-    is(
         $exception->get_method_at(0)->name,
         "foo",
         "foo is required by Foo3::Role, but it's not implemented by My::Foo::Class::Broken3");
@@ -418,7 +414,7 @@ use Moose();
         "foo is required by Foo4::Role and imported by Class");
 
     is(
-        $exception->class,
+        find_meta($exception->class_name),
         Class->meta,
         "foo is required by Foo4::Role and imported by Class");
 
@@ -428,11 +424,6 @@ use Moose();
         "foo is required by Foo4::Role and imported by Class");
 
     is(
-        $exception->role->name,
-        'Foo4::Role',
-        "foo is required by Foo4::Role and imported by Class");
-
-    is(
         $exception->get_method_at(0)->name,
         "foo",
         "foo is required by Foo4::Role and imported by Class");
@@ -1,10 +1,11 @@
-
 use strict;
 use warnings;
 
 use Test::More;
 use Test::Fatal;
 
+use Moose::Util 'find_meta';
+
 use Moose();
 
 {
@@ -39,17 +40,17 @@ use Moose();
         'Role Foo excludes Role Bar');
 
     is(
-        $exception->role,
+        find_meta($exception->role_name),
         Foo->meta,
         'Role Foo excludes Role Bar');
 
     is(
-        $exception->excluded_role->name,
+        $exception->excluded_role_name,
         "Bar",
         'Role Foo excludes Role Bar');
 
     is(
-        $exception->excluded_role,
+        find_meta($exception->excluded_role_name),
         Bar->meta,
         'Role Foo excludes Role Bar');
 }
@@ -87,32 +88,32 @@ use Moose();
         'Role Bar2 does Role Bar3');
 
     is(
-        $exception->second_role->name,
+        $exception->second_role_name,
         "Foo2",
         'Role Bar2 does Role Bar3');
 
     is(
-        $exception->second_role,
+        find_meta($exception->second_role_name),
         Foo2->meta,
         'Role Bar2 does Role Bar3');
 
     is(
-        $exception->excluded_role->name,
+        $exception->excluded_role_name,
         "Bar3",
         'Role Bar2 does Role Bar3');
 
     is(
-        $exception->excluded_role,
+        find_meta($exception->excluded_role_name),
         Bar3->meta,
         'Role Bar2 does Role Bar3');
 
     is(
-        $exception->role->name,
+        $exception->role_name,
         "Bar2",
         'Role Bar2 does Role Bar3');
 
     is(
-        $exception->role,
+        find_meta($exception->role_name),
         Bar2->meta,
         'Role Bar2 does Role Bar3');
 }
@@ -125,7 +126,7 @@ use Moose();
         has 'foo' => (
             is  => 'ro',
             isa => 'Int'
-	);
+        );
     }
 
     {
@@ -135,7 +136,7 @@ use Moose();
         has 'foo' => (
             is  => 'ro',
             isa => 'Int'
-	);
+        );
     }
 
     my $exception = exception {
@@ -145,37 +146,37 @@ use Moose();
     like(
         $exception,
         qr/\QRole 'Foo4' has encountered an attribute conflict while being composed into 'Bar4'. This is a fatal error and cannot be disambiguated. The conflicting attribute is named 'foo'./,
-	'Role Foo4 & Role Bar4 has one common attribute named "foo"');
+        'Role Foo4 & Role Bar4 has one common attribute named "foo"');
 
     isa_ok(
         $exception,
         "Moose::Exception::AttributeConflictInRoles",
-	'Role Foo4 & Role Bar4 has one common attribute named "foo"');
+        'Role Foo4 & Role Bar4 has one common attribute named "foo"');
 
     is(
         $exception->role_name,
         "Foo4",
-	'Role Foo4 & Role Bar4 has one common attribute named "foo"');
+        'Role Foo4 & Role Bar4 has one common attribute named "foo"');
 
     is(
-        $exception->role,
+        find_meta($exception->role_name),
         Foo4->meta,
-	'Role Foo4 & Role Bar4 has one common attribute named "foo"');
+        'Role Foo4 & Role Bar4 has one common attribute named "foo"');
 
     is(
-        $exception->second_role->name,
+        $exception->second_role_name,
         "Bar4",
-	'Role Foo4 & Role Bar4 has one common attribute named "foo"');
+        'Role Foo4 & Role Bar4 has one common attribute named "foo"');
 
     is(
-        $exception->second_role,
+        find_meta($exception->second_role_name),
         Bar4->meta,
-	'Role Foo4 & Role Bar4 has one common attribute named "foo"');
+        'Role Foo4 & Role Bar4 has one common attribute named "foo"');
 
     is(
         $exception->attribute_name,
         'foo',
-	'Role Foo4 & Role Bar4 has one common attribute named "foo"');
+        'Role Foo4 & Role Bar4 has one common attribute named "foo"');
 }
 
 {
@@ -214,17 +215,17 @@ use Moose();
         "Role Bar5 already has a method named foo_in_bar");
 
     is(
-        $exception->role,
+        find_meta($exception->role_name),
         Bar5->meta,
         "Role Bar5 already has a method named foo_in_bar");
 
     is(
-        $exception->role_being_applied->name,
+        $exception->role_being_applied_name,
         "Foo5",
         "Role Bar5 already has a method named foo_in_bar");
 
     is(
-        $exception->role_being_applied,
+        find_meta($exception->role_being_applied_name),
         Foo5->meta,
         "Role Bar5 already has a method named foo_in_bar");
 
@@ -273,17 +274,17 @@ use Moose();
         "Role Foo6 is overriding a method named foo6, which is a local method in Bar6");
 
     is(
-        $exception->role,
+        find_meta($exception->role_name),
         Bar6->meta,
         "Role Foo6 is overriding a method named foo6, which is a local method in Bar6");
 
     is(
-        $exception->role_being_applied->name,
+        $exception->role_being_applied_name,
         "Foo6",
         "Role Foo6 is overriding a method named foo6, which is a local method in Bar6");
 
     is(
-        $exception->role_being_applied,
+        find_meta($exception->role_being_applied_name),
         Foo6->meta,
         "Role Foo6 is overriding a method named foo6, which is a local method in Bar6");
 
@@ -326,17 +327,17 @@ use Moose();
         "Roles Foo7 & Bar7, both have override foo7");
 
     is(
-        $exception->role,
+        find_meta($exception->role_name),
         Bar7->meta,
         "Roles Foo7 & Bar7, both have override foo7");
 
     is(
-        $exception->role_being_applied->name,
+        $exception->role_being_applied_name,
         "Foo7",
         "Roles Foo7 & Bar7, both have override foo7");
 
     is(
-        $exception->role_being_applied,
+        find_meta($exception->role_being_applied_name),
         Foo7->meta,
         "Roles Foo7 & Bar7, both have override foo7");
 
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -9,7 +8,7 @@ use Moose::Meta::Role::Application;
 
 {
     my $exception =  exception {
-	Moose::Meta::Role::Application->check_role_exclusions;
+        Moose::Meta::Role::Application->check_role_exclusions;
     };
 
     like(
@@ -25,7 +24,7 @@ use Moose::Meta::Role::Application;
 
 {
     my $exception =  exception {
-	Moose::Meta::Role::Application->check_required_methods;
+        Moose::Meta::Role::Application->check_required_methods;
     };
 
     like(
@@ -41,7 +40,7 @@ use Moose::Meta::Role::Application;
 
 {
     my $exception =  exception {
-	Moose::Meta::Role::Application->check_required_attributes;
+        Moose::Meta::Role::Application->check_required_attributes;
     };
 
     like(
@@ -57,7 +56,7 @@ use Moose::Meta::Role::Application;
 
 {
     my $exception =  exception {
-	Moose::Meta::Role::Application->apply_attributes;
+        Moose::Meta::Role::Application->apply_attributes;
     };
 
     like(
@@ -73,7 +72,7 @@ use Moose::Meta::Role::Application;
 
 {
     my $exception =  exception {
-	Moose::Meta::Role::Application->apply_methods;
+        Moose::Meta::Role::Application->apply_methods;
     };
 
     like(
@@ -89,7 +88,7 @@ use Moose::Meta::Role::Application;
 
 {
     my $exception =  exception {
-	Moose::Meta::Role::Application->apply_override_method_modifiers;
+        Moose::Meta::Role::Application->apply_override_method_modifiers;
     };
 
     like(
@@ -105,7 +104,7 @@ use Moose::Meta::Role::Application;
 
 {
     my $exception =  exception {
-	Moose::Meta::Role::Application->apply_method_modifiers;
+        Moose::Meta::Role::Application->apply_method_modifiers;
     };
 
     like(
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -15,12 +14,12 @@ use Moose();
     like(
         $exception,
         qr/You must provide a name for the attribute/,
-	"no name is given");
+        "no name is given");
 
     isa_ok(
         $exception,
         "Moose::Exception::MustProvideANameForTheAttribute",
-	"no name is given");
+        "no name is given");
 }
 
 {
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -15,17 +14,17 @@ use Moose();
     like(
         $exception,
         qr/\QThe list of roles must be instances of Moose::Meta::Role, not foo/,
-	"'foo' is not an instance of Moose::Meta::Role");
+        "'foo' is not an instance of Moose::Meta::Role");
 
     isa_ok(
         $exception,
         "Moose::Exception::RolesListMustBeInstancesOfMooseMetaRole",
-	"'foo' is not an instance of Moose::Meta::Role");
+        "'foo' is not an instance of Moose::Meta::Role");
 
     is(
         $exception->role,
         "foo",
-	"'foo' is not an instance of Moose::Meta::Role");
+        "'foo' is not an instance of Moose::Meta::Role");
 }
 
 {
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -10,7 +9,7 @@ use Moose::Util::TypeConstraints;
 
 {
     my $exception = exception {
-        Moose::Meta::TypeCoercion::Union->new( type_constraint => "Str" );
+        Moose::Meta::TypeCoercion::Union->new( type_constraint => find_type_constraint("Str") );
     };
 
     like(
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -48,18 +47,18 @@ use Moose();
     like(
         $exception,
         qr/\QEnum values must be strings, not '$arrayRef'/,
-	"an array ref is given instead of a string");
+        "an array ref is given instead of a string");
         #Enum values must be strings, not 'ARRAY(0x191d1b8)'
 
     isa_ok(
         $exception,
         "Moose::Exception::EnumValuesMustBeString",
-	"an array ref is given instead of a string");
+        "an array ref is given instead of a string");
 
     is(
-	$exception->value,
-	$arrayRef,
-	"an array ref is given instead of a string");
+        $exception->value,
+        $arrayRef,
+        "an array ref is given instead of a string");
 }
 
 done_testing;
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -27,13 +26,13 @@ use Moose::Util::TypeConstraints;
         "no inline constraint was defined for xyz");
 
     is(
-        $exception->type,
-        $intType,
+        $exception->type_name,
+        "Int",
         "no inline constraint was defined for xyz");
 
     is(
-        $exception->parameterizable_type_object,
-        $type,
+        $exception->parameterizable_type_object_name,
+        $type->name,
         "no inline constraint was defined for xyz");
 }
 
@@ -55,7 +54,7 @@ use Moose::Util::TypeConstraints;
         "Int is not a subtype of Float");
 
     is(
-        $exception->type,
+        $exception->type_name,
         $parameterizable,
         "Int is not a subtype of Float");
 
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -57,7 +56,7 @@ use Test::Fatal;
         has 'foo' => (
             is  => 'ro',
             isa => 'Int[Xyz]',
-	);
+        );
     };
 
     like(
@@ -74,6 +73,11 @@ use Test::Fatal;
         $exception->type_name,
         "Int[Xyz]",
         "invalid isa given to foo");
+
+    is(
+        $exception->parent_type_name,
+        'Int',
+        "invalid isa given to foo");
 }
 
 done_testing;
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -23,7 +22,7 @@ use Moose();
         "You cannot coerce a type unless coercion is supported by that type");
 
     is(
-        $exception->type->name,
+        $exception->type_name,
         'HexNum',
         "You cannot coerce a type unless coercion is supported by that type");
 
@@ -41,12 +40,12 @@ use Moose();
     like(
         $exception,
         qr/The 'message' parameter must be a coderef/,
-	"'foo' is not a CODE ref");
+        "'foo' is not a CODE ref");
 
     isa_ok(
         $exception,
         "Moose::Exception::MessageParameterMustBeCodeRef",
-	"'foo' is not a CODE ref");
+        "'foo' is not a CODE ref");
 }
 
 {
@@ -75,7 +74,7 @@ use Moose();
         "cannot inline NotInlinable");
 
     is(
-        $exception->type,
+        find_type_constraint( $exception->type_name ),
         $not_inlinable,
         "cannot inline NotInlinable");
 }
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -7,6 +6,8 @@ use Test::Fatal;
 
 use Moose();
 
+use Moose::Util 'find_meta';
+
 {
     my $exception = exception {
         package Bar;
@@ -43,7 +44,7 @@ use Moose();
         "requires expects atleast one method name");
 
     is(
-        $exception->role->name,
+        $exception->role_name,
         'Bar',
         'requires expects atleast one method name');
 }
@@ -66,7 +67,7 @@ use Moose();
         "excludes expects atleast one role name");
 
     is(
-        $exception->role->name,
+        $exception->role_name,
         'Bar',
         'excludes expects atleast one role name');
 }
@@ -134,7 +135,7 @@ use Moose();
         "has takes a hash");
 
     is(
-        $exception->role->name,
+        $exception->role_name,
         'Foo1',
         "has takes a hash");
 }
@@ -180,8 +181,8 @@ use Moose();
 
 {
     {
-	package Foo3;
-	use Moose;
+        package Foo3;
+        use Moose;
     }
 
     my $exception = exception {
@@ -207,8 +208,8 @@ use Moose();
 
 {
     {
-	package Foo3;
-	use Moose;
+        package Foo3;
+        use Moose;
     }
 
     my $exception = exception {
@@ -235,7 +236,7 @@ use Moose();
         "Foo3 is a Moose class");
 
     is(
-        $exception->class,
+        find_meta($exception->class_name),
         Foo3->meta,
         "Foo3 is a Moose class");
 
@@ -273,7 +274,7 @@ use Moose();
         "Foo4 is a Class::MOP::Class, not a Moose::Meta::Role");
 
     is(
-        $exception->class,
+        find_meta( $exception->class_name ),
         $foo,
         "Foo4 is a Class::MOP::Class, not a Moose::Meta::Role");
 
@@ -285,10 +286,10 @@ use Moose();
 
 {
     my $exception = exception {
-	package Foo;
-	use Moose::Role;
+        package Foo;
+        use Moose::Role;
 
-	before qr/foo/;
+        before qr/foo/;
     };
 
     like(
@@ -307,7 +308,7 @@ use Moose();
         "a regex reference is given to before");
 
     is(
-        $exception->role,
+        find_meta($exception->role_name),
         Foo->meta,
         "a regex reference is given to before");
 
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -84,7 +83,7 @@ my $x = "123";
         "an ArrayRef is given as action");
 
     is(
-        $exception->type,
+        $exception->type_name,
         "Int",
         "an ArrayRef is given as action");
 
@@ -1,10 +1,11 @@
-
 use strict;
 use warnings;
 
 use Test::More;
 use Test::Fatal;
 
+use Moose::Util 'find_meta';
+
 # tests for extends without arguments
 {
     my $exception = exception {
@@ -58,15 +59,15 @@ use Test::Fatal;
         "Foo2 is not loaded");
 
     is(
-	$exception->class_name,
-	"Foo2",
-	"Foo2 is not loaded");
+        $exception->class_name,
+        "Foo2",
+        "Foo2 is not loaded");
 }
 
 {
     {
-	package Foo3;
-	use Moose::Role;
+        package Foo3;
+        use Moose::Role;
     }
 
     my $exception = exception {
@@ -92,8 +93,8 @@ use Test::Fatal;
 
 {
     {
-	package Foo3;
-	use Moose::Role;
+        package Foo3;
+        use Moose::Role;
     }
 
     my $exception = exception {
@@ -120,7 +121,7 @@ use Test::Fatal;
         "Foo3 is a Moose::Role");
 
     is(
-        $exception->role,
+        find_meta($exception->role_name),
         Foo3->meta,
         "Foo3 is a Moose::Role");
 
@@ -133,8 +134,8 @@ use Test::Fatal;
 {
     my $foo;
     {
-	use Moose;
-	$foo = Class::MOP::Class->create("Foo4");
+        use Moose;
+        $foo = Class::MOP::Class->create("Foo4");
     }
 
     my $exception = exception {
@@ -159,7 +160,7 @@ use Test::Fatal;
         "Foo4 is a Class::MOP::Class, not a Moose::Meta::Class");
 
     is(
-        $exception->class,
+        find_meta($exception->class_name),
         $foo,
         "Foo4 is a Class::MOP::Class, not a Moose::Meta::Class");
 
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -51,7 +50,7 @@ use Test::Fatal;
         "Cannot call does() without a role name");
 
     is(
-        $exception->class->name,
+        $exception->class_name,
         "Foo",
         "Cannot call does() without a role name");
 
@@ -70,7 +69,7 @@ use Test::Fatal;
         "Cannot call does() without a role name");
 
     is(
-        $exception->class->name,
+        $exception->class_name,
         "Foo",
         "Cannot call does() without a role name");
 }
@@ -0,0 +1,45 @@
+use strict;
+use warnings;
+
+use Test::More;
+use Test::Fatal;
+
+# https://rt.cpan.org/Ticket/Display.html?id=92818
+
+{
+    package Parent;
+    use Moose;
+    has x => (
+        is => 'rw',
+        required => 1,
+    );
+}
+
+{
+    my $e = exception { my $obj = Parent->new };
+    ok(
+        $e->isa('Moose::Exception::AttributeIsRequired'),
+        'got the right exception',
+    )
+    or note 'got exception ', ref($e), ': ', $e->message;
+}
+
+{
+    package Child;
+    use Moose;
+    extends 'Parent';
+}
+
+# the exception produced should be AttributeIsRequired, however
+# AttributeIsRequired was throwing the exception ClassNamesDoNotMatch.
+
+{
+    my $e = exception { my $obj = Child->new };
+    ok(
+        $e->isa('Moose::Exception::AttributeIsRequired'),
+        'got the right exception',
+    )
+    or note 'got exception ', ref($e), ': ', $e->message;
+}
+
+done_testing;
@@ -0,0 +1,34 @@
+use strict;
+use warnings;
+
+use Test::More;
+use Test::Fatal;
+
+# https://rt.cpan.org/Ticket/Display.html?id=94795
+
+# the exception produced should be AttributeIsRequired, however
+# AttributeIsRequired was throwing the exception ClassNamesDoNotMatch.
+
+{
+    package AAA;
+    use Moose;
+    has my_attr => (
+        is => 'ro',
+        required => 1,
+    );
+}
+
+{
+    package BBB;
+    use Moose;
+    extends qw/AAA/;
+}
+
+my $e = exception { BBB->new };
+ok(
+    $e->isa('Moose::Exception::AttributeIsRequired'),
+    'got the right exception',
+)
+or note 'got exception ', ref($e), ': ', $e->message;
+
+done_testing;
@@ -0,0 +1,34 @@
+use strict;
+use warnings;
+
+use Test::More;
+use Test::Fatal;
+
+# this test taken from MooseX::ABC t/immutable.t, where it broke with Moose 2.1207
+
+{
+    package ABC;
+    use Moose::Role;
+    around new => sub {
+        my $orig = shift;
+        my $class = shift;
+        my $meta = Class::MOP::class_of($class);
+        $meta->throw_error("$class is abstract, it cannot be instantiated");
+        $class->$orig(@_);
+    };
+}
+{
+    package MyApp::Base;
+    use Moose;
+    with 'ABC';
+    __PACKAGE__->meta->make_immutable(inline_constructor => 0);
+}
+
+
+like(
+    exception { MyApp::Base->new },
+    qr/MyApp::Base is abstract, it cannot be instantiated/,
+    'instantiating abstract classes fails',
+);
+
+done_testing;
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -26,81 +25,81 @@ use Moose::Util::TypeConstraints;
 
 {
     my $exception = exception {
-	Moose::Util::TypeConstraints::create_type_constraint_union();
+        Moose::Util::TypeConstraints::create_type_constraint_union();
     };
 
     like(
         $exception,
         qr/You must pass in at least 2 type names to make a union/,
-	"Moose::Util::TypeConstraints::create_type_constraint_union takes atleast two arguments");
+        "Moose::Util::TypeConstraints::create_type_constraint_union takes atleast two arguments");
 
     isa_ok(
         $exception,
         "Moose::Exception::UnionTakesAtleastTwoTypeNames",
-	"Moose::Util::TypeConstraints::create_type_constraint_union takes atleast two arguments");
+        "Moose::Util::TypeConstraints::create_type_constraint_union takes atleast two arguments");
 }
 
 {
     my $exception = exception {
-	Moose::Util::TypeConstraints::create_type_constraint_union('foo','bar');
+        Moose::Util::TypeConstraints::create_type_constraint_union('foo','bar');
     };
 
     like(
         $exception,
         qr/\QCould not locate type constraint (foo) for the union/,
-	"invalid typeconstraint given to Moose::Util::TypeConstraints::create_type_constraint_union");
+        "invalid typeconstraint given to Moose::Util::TypeConstraints::create_type_constraint_union");
 
     isa_ok(
         $exception,
         "Moose::Exception::CouldNotLocateTypeConstraintForUnion",
-	"invalid typeconstraint given to Moose::Util::TypeConstraints::create_type_constraint_union");
+        "invalid typeconstraint given to Moose::Util::TypeConstraints::create_type_constraint_union");
 
     is(
-	$exception->type_name,
-	'foo',
-	"invalid typeconstraint given to Moose::Util::TypeConstraints::create_type_constraint_union");
+        $exception->type_name,
+        'foo',
+        "invalid typeconstraint given to Moose::Util::TypeConstraints::create_type_constraint_union");
 }
 
 {
     my $exception = exception {
-	Moose::Util::TypeConstraints::create_parameterized_type_constraint("Foo");
+        Moose::Util::TypeConstraints::create_parameterized_type_constraint("Foo");
     };
 
     like(
         $exception,
         qr/\QCould not parse type name (Foo) correctly/,
-	"'Foo' is not a valid type constraint name");
+        "'Foo' is not a valid type constraint name");
 
     isa_ok(
         $exception,
         "Moose::Exception::InvalidTypeGivenToCreateParameterizedTypeConstraint",
-	"'Foo' is not a valid type constraint name");
+        "'Foo' is not a valid type constraint name");
 }
 
 {
     my $exception = exception {
-	Moose::Util::TypeConstraints::create_parameterized_type_constraint("Foo[Int]");
+        Moose::Util::TypeConstraints::create_parameterized_type_constraint("Foo[Int]");
     };
 
     like(
         $exception,
         qr/\QCould not locate the base type (Foo)/,
-	"'Foo' is not a valid base type constraint name");
+        "'Foo' is not a valid base type constraint name");
 
     isa_ok(
         $exception,
         "Moose::Exception::InvalidBaseTypeGivenToCreateParameterizedTypeConstraint",
-	"'Foo' is not a valid base type constraint name");
+        "'Foo' is not a valid base type constraint name");
 }
 
 {
     {
-	package Foo1;
-	use Moose::Role;
+        package Foo1;
+        use Moose::Role;
     }
 
     my $exception = exception {
-	Moose::Util::TypeConstraints::class_type("Foo1");
+        Moose::Util::TypeConstraints::class_type("Foo1");
     };
 
     like(
@@ -114,29 +113,29 @@ use Moose::Util::TypeConstraints;
         "there is an already defined role of name 'Foo1'");
 
     is(
-	$exception->type->name,
-	'Foo1',
+        $exception->type_name,
+        'Foo1',
         "there is an already defined role of name 'Foo1'");
 
     is(
-	$exception->type->_package_defined_in,
-	'Moose::Role',
+        (find_type_constraint($exception->type_name))->_package_defined_in,
+        'Moose::Role',
         "there is an already defined role of name 'Foo1'");
 
     is(
-	$exception->package_defined_in,
-	'main',
+        $exception->package_defined_in,
+        'main',
         "there is an already defined role of name 'Foo1'");
 }
 
 {
     {
-	package Foo2;
-	use Moose;
+        package Foo2;
+        use Moose;
     }
 
     my $exception = exception {
-	Moose::Util::TypeConstraints::role_type("Foo2");
+        Moose::Util::TypeConstraints::role_type("Foo2");
     };
 
     like(
@@ -150,24 +149,24 @@ use Moose::Util::TypeConstraints;
         "there is an already defined class of name 'Foo2'");
 
     is(
-	$exception->type->name,
-	'Foo2',
+        $exception->type_name,
+        'Foo2',
         "there is an already defined class of name 'Foo2'");
 
     is(
-	$exception->type->_package_defined_in,
-	'Moose',
+        (find_type_constraint($exception->type_name))->_package_defined_in,
+        'Moose',
         "there is an already defined class of name 'Foo2'");
 
     is(
-	$exception->package_defined_in,
-	'main',
+        $exception->package_defined_in,
+        'main',
         "there is an already defined class of name 'Foo2'");
 }
 
 {
     my $exception = exception {
-	subtype 'Foo';
+        subtype 'Foo';
     };
 
     like(
@@ -181,14 +180,14 @@ use Moose::Util::TypeConstraints;
         "no parent given to subtype");
 
     is(
-	$exception->name,
-	'Foo',
+        $exception->name,
+        'Foo',
         "no parent given to subtype");
 }
 
 {
     my $exception = exception {
-	enum [1,2,3], "foo";
+        enum [1,2,3], "foo";
     };
 
     like(
@@ -204,7 +203,7 @@ use Moose::Util::TypeConstraints;
 
 {
     my $exception = exception {
-	union [1,2,3], "foo";
+        union [1,2,3], "foo";
     };
 
     like(
@@ -220,12 +219,12 @@ use Moose::Util::TypeConstraints;
 
 {
     {
-	package Foo3;
-	use Moose;
+        package Foo3;
+        use Moose;
     }
 
     my $exception = exception {
-	Moose::Util::TypeConstraints::type("Foo3");
+        Moose::Util::TypeConstraints::type("Foo3");
     };
 
     like(
@@ -239,24 +238,24 @@ use Moose::Util::TypeConstraints;
         "there is an already defined class of name 'Foo3'");
 
     is(
-	$exception->type->name,
-	'Foo3',
+        $exception->type_name,
+        'Foo3',
         "there is an already defined class of name 'Foo3'");
 
     is(
-	$exception->type->_package_defined_in,
-	'Moose',
+        find_type_constraint($exception->type_name)->_package_defined_in,
+        'Moose',
         "there is an already defined class of name 'Foo3'");
 
     is(
-	$exception->package_defined_in,
-	'main',
+        $exception->package_defined_in,
+        'main',
         "there is an already defined class of name 'Foo3'");
 }
 
 {
     my $exception = exception {
-	Moose::Util::TypeConstraints::coerce "Foo";
+        Moose::Util::TypeConstraints::coerce "Foo";
     };
 
     like(
@@ -272,7 +271,7 @@ use Moose::Util::TypeConstraints;
 
 {
     my $exception = exception {
-	Moose::Util::TypeConstraints::add_parameterizable_type "Foo";
+        Moose::Util::TypeConstraints::add_parameterizable_type "Foo";
     };
 
     like(
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -116,12 +115,12 @@ use Moose::Util qw/apply_all_roles add_method_modifier/;
 
 {
     {
-	package Foo;
-	use Moose;
+        package Foo;
+        use Moose;
     }
 
     my $exception = exception {
-	add_method_modifier(Foo->meta, "before", [{}, sub {"before";}]);
+        add_method_modifier(Foo->meta, "before", [{}, sub {"before";}]);
     };
 
     like(
@@ -135,32 +134,34 @@ use Moose::Util qw/apply_all_roles add_method_modifier/;
         "we gave a HashRef to before");
 
     is(
-	ref( $exception->params->[0] ),
-	"HASH",
+        ref( $exception->params->[0] ),
+        "HASH",
         "we gave a HashRef to before");
 
     is(
-	$exception->modifier_name,
-	'before',
+        $exception->modifier_name,
+        'before',
         "we gave a HashRef to before");
 
     is(
-	$exception->class_or_object->name,
-	"Foo",
+        $exception->class_or_object->name,
+        "Foo",
         "we gave a HashRef to before");
 }
 
 {
-    use Moose::Util;
-    use Moose::Util::TypeConstraints;
-
     my $exception = exception {
-        Moose::Util::resolve_metaclass_alias(find_type_constraint('Int'), 'Xyz');
+        package My::Class;
+        use Moose;
+        has 'attr' => (
+            is     => 'ro',
+            traits => [qw( Xyz )],
+        );
     };
 
     like(
         $exception,
-        qr/^Can't locate Moose::Meta::Int::Custom::Xyz or Xyz in \@INC \(\@INC contains:/,
+        qr/^Can't locate Moose::Meta::Attribute::Custom::Trait::Xyz or Xyz in \@INC \(\@INC contains:/,
         "Cannot locate 'Xyz'");
 
     isa_ok(
@@ -169,18 +170,18 @@ use Moose::Util qw/apply_all_roles add_method_modifier/;
         "Cannot locate 'Xyz'");
 
     is(
-	$exception->type_name,
-	"Int",
+        $exception->type,
+        "Attribute",
         "Cannot locate 'Xyz'");
 
     is(
-	$exception->possible_packages,
-	'Moose::Meta::Int::Custom::Xyz or Xyz',
+        $exception->possible_packages,
+        'Moose::Meta::Attribute::Custom::Trait::Xyz or Xyz',
         "Cannot locate 'Xyz'");
 
     is(
-	$exception->metaclass_name,
-	"Xyz",
+        $exception->metaclass_name,
+        "Xyz",
         "Cannot locate 'Xyz'");
 }
 
@@ -2,10 +2,7 @@ use strict;
 use warnings;
 
 use Test::More;
-
-use Test::Requires {
-    'Test::Output' => '0.01', # skip all if not installed
-};
+use Test::Requires 'Test::Output';  # skip all if not installed
 
 {
     package NotMoose;
@@ -2,10 +2,7 @@ use strict;
 use warnings;
 
 use Test::More;
-
-use Test::Requires {
-    'Test::Output' => '0.01', # skip all if not installed
-};
+use Test::Requires 'Test::Output';  # skip all if not installed
 
 {
     package ModdedNew;
@@ -2,10 +2,7 @@ use strict;
 use warnings;
 
 use Test::More;
-
-use Test::Requires {
-    'Test::Output' => '0.01', # skip all if not installed
-};
+use Test::Requires 'Test::Output';  # skip all if not installed
 
 {
     package Foo;
@@ -1,11 +1,12 @@
 use strict;
 use warnings;
+
 use Test::More;
+use Test::Requires qw(Data::Visitor PadWalker);
 
 use Class::Load 'load_class';
-use Test::Requires 'Data::Visitor';
-use Test::Requires 'PadWalker';
 use Try::Tiny;
+
 my $can_partialdump = try {
     load_class('Devel::PartialDump', { -version => 0.14 }); 1;
 };
@@ -1,4 +1,3 @@
-
 package Bar;
 use Moose;
 use Moose::Util::TypeConstraints;
@@ -1,7 +1,6 @@
-
 package Foo;
 use Moose;
 
 has 'bar' => (is => 'rw');
 
-1;
\ No newline at end of file
+1;
@@ -1,5 +1,3 @@
-
-
 package MyExporter;
 use Moose::Exporter;
 use Test::More;
@@ -1,9 +1,9 @@
-# this functionality may be pushing toward parametric roles/classes
-# it's off in a corner and may not be that important
-
 use strict;
 use warnings;
 
+# this functionality may be pushing toward parametric roles/classes
+# it's off in a corner and may not be that important
+
 use Test::More;
 use Test::Fatal;
 
@@ -61,4 +61,3 @@ ok(Class::Vacuum::Innards->can('parasol'), 'Vacuum stole the parasol method');
 ok(!Victim2->can('parasol'), 'Victim does not get it at all');
 
 done_testing;
-
@@ -4,10 +4,7 @@ use warnings;
 use Test::More;
 use Test::Fatal;
 use Test::Moose;
-
-use Test::Requires {
-    'Test::Output' => '0.01', # skip all if not installed
-};
+use Test::Requires 'Test::Output';  # skip all if not installed
 
 {
     package HasOwnImmutable;
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -7,4 +7,37 @@ BEGIN {
     use_ok('Moose::Util');
 }
 
+{
+    package Moosey::Class;
+    use Moose;
+}
+{
+    package Moosey::Role;
+    use Moose::Role;
+}
+{
+    package Other;
+}
+{
+    package Moosey::Composed;
+    use Moose;
+    with 'Moosey::Role';
+}
+
+use Moose::Util 'is_role';
+
+{
+    my $class = Moosey::Class->new;
+    my $composed = Moosey::Composed->new;
+
+    ok(!is_role('Moosey::Class'), 'a moose class is not a role');
+    ok(is_role('Moosey::Role'), 'a moose role is a role');
+    ok(!is_role('Other'), 'something else is not a role');
+    ok(!is_role('DoesNotExist'), 'non-existent namespace is not a role');
+    ok(!is_role('Moosey::Composed'), 'a moose class that composes a role is not a role');
+
+    ok(!is_role($class), 'instantiated moose object is not a role');
+    ok(!is_role($composed), 'instantiated moose object that does a role is not a role');
+}
+
 done_testing;
@@ -1,4 +1,3 @@
-
 use strict;
 use warnings;
 
@@ -1,219 +0,0 @@
-use strict;
-use warnings;
-
-use Test::More;
-
-
-{
-    package Human;
-
-    use Moose;
-    use Moose::Util::TypeConstraints;
-
-    subtype 'Sex'
-        => as 'Str'
-        => where { $_ =~ m{^[mf]$}s };
-
-    has 'sex'    => ( is => 'ro', isa => 'Sex', required => 1 );
-
-    has 'mother' => ( is => 'ro', isa => 'Human' );
-    has 'father' => ( is => 'ro', isa => 'Human' );
-
-    use overload '+' => \&_overload_add, fallback => 1;
-
-    sub _overload_add {
-        my ( $one, $two ) = @_;
-
-        die('Only male and female humans may create children')
-            if ( $one->sex() eq $two->sex() );
-
-        my ( $mother, $father )
-            = ( $one->sex eq 'f' ? ( $one, $two ) : ( $two, $one ) );
-
-        my $sex = 'f';
-        $sex = 'm' if ( rand() >= 0.5 );
-
-        return Human->new(
-            sex       => $sex,
-            eye_color => ( $one->eye_color() + $two->eye_color() ),
-            mother    => $mother,
-            father    => $father,
-        );
-    }
-
-    use List::MoreUtils qw( zip );
-
-    coerce 'Human::EyeColor'
-        => from 'ArrayRef'
-        => via { my @genes = qw( bey2_1 bey2_2 gey_1 gey_2 );
-                 return Human::EyeColor->new( zip( @genes, @{$_} ) ); };
-
-    has 'eye_color' => (
-        is       => 'ro',
-        isa      => 'Human::EyeColor',
-        coerce   => 1,
-        required => 1,
-    );
-
-}
-
-{
-    package Human::Gene::bey2;
-
-    use Moose;
-    use Moose::Util::TypeConstraints;
-
-    type 'bey2_color' => where { $_ =~ m{^(?:brown|blue)$} };
-
-    has 'color' => ( is => 'ro', isa => 'bey2_color' );
-}
-
-{
-    package Human::Gene::gey;
-
-    use Moose;
-    use Moose::Util::TypeConstraints;
-
-    type 'gey_color' => where { $_ =~ m{^(?:green|blue)$} };
-
-    has 'color' => ( is => 'ro', isa => 'gey_color' );
-}
-
-{
-    package Human::EyeColor;
-
-    use Moose;
-    use Moose::Util::TypeConstraints;
-
-    coerce 'Human::Gene::bey2'
-        => from 'Str'
-            => via { Human::Gene::bey2->new( color => $_ ) };
-
-    coerce 'Human::Gene::gey'
-        => from 'Str'
-            => via { Human::Gene::gey->new( color => $_ ) };
-
-    has [qw( bey2_1 bey2_2 )] =>
-        ( is => 'ro', isa => 'Human::Gene::bey2', coerce => 1 );
-
-    has [qw( gey_1 gey_2 )] =>
-        ( is => 'ro', isa => 'Human::Gene::gey', coerce => 1 );
-
-    sub color {
-        my ($self) = @_;
-
-        return 'brown'
-            if ( $self->bey2_1->color() eq 'brown'
-            or $self->bey2_2->color() eq 'brown' );
-
-        return 'green'
-            if ( $self->gey_1->color() eq 'green'
-            or $self->gey_2->color() eq 'green' );
-
-        return 'blue';
-    }
-
-    use overload '""' => \&color, fallback => 1;
-
-    use overload '+' => \&_overload_add, fallback => 1;
-
-    sub _overload_add {
-        my ( $one, $two ) = @_;
-
-        my $one_bey2 = 'bey2_' . _rand2();
-        my $two_bey2 = 'bey2_' . _rand2();
-
-        my $one_gey = 'gey_' . _rand2();
-        my $two_gey = 'gey_' . _rand2();
-
-        return Human::EyeColor->new(
-            bey2_1 => $one->$one_bey2->color(),
-            bey2_2 => $two->$two_bey2->color(),
-            gey_1  => $one->$one_gey->color(),
-            gey_2  => $two->$two_gey->color(),
-        );
-    }
-
-    sub _rand2 {
-        return 1 + int( rand(2) );
-    }
-}
-
-my $gene_color_sets = [
-    [ qw( blue blue blue blue )     => 'blue' ],
-    [ qw( blue blue green blue )    => 'green' ],
-    [ qw( blue blue blue green )    => 'green' ],
-    [ qw( blue blue green green )   => 'green' ],
-    [ qw( brown blue blue blue )    => 'brown' ],
-    [ qw( brown brown green green ) => 'brown' ],
-    [ qw( blue brown green blue )   => 'brown' ],
-];
-
-foreach my $set (@$gene_color_sets) {
-    my $expected_color = pop(@$set);
-
-    my $person = Human->new(
-        sex       => 'f',
-        eye_color => $set,
-    );
-
-    is(
-        $person->eye_color(),
-        $expected_color,
-        'gene combination '
-            . join( ',', @$set )
-            . ' produces '
-            . $expected_color
-            . ' eye color',
-    );
-}
-
-my $parent_sets = [
-    [
-        [qw( blue blue blue blue )],
-        [qw( blue blue blue blue )] => 'blue'
-    ],
-    [
-        [qw( blue blue blue blue )],
-        [qw( brown brown green blue )] => 'brown'
-    ],
-    [
-        [qw( blue blue green green )],
-        [qw( blue blue green green )] => 'green'
-    ],
-];
-
-foreach my $set (@$parent_sets) {
-    my $expected_color = pop(@$set);
-
-    my $mother         = Human->new(
-        sex       => 'f',
-        eye_color => shift(@$set),
-    );
-
-    my $father = Human->new(
-        sex       => 'm',
-        eye_color => shift(@$set),
-    );
-
-    my $child = $mother + $father;
-
-    is(
-        $child->eye_color(),
-        $expected_color,
-        'mother '
-            . $mother->eye_color()
-            . ' + father '
-            . $father->eye_color()
-            . ' = child '
-            . $expected_color,
-    );
-}
-
-# Hmm, not sure how to test for random selection of genes since
-# I could theoretically run an infinite number of iterations and
-# never find proof that a child has inherited a particular gene.
-
-# AUTHOR: Aran Clary Deltac <bluefeet@cpan.org>
-
-done_testing;
@@ -8,9 +8,7 @@ $| = 1;
 
 
 # =begin testing SETUP
-use Test::Requires {
-    'Test::Output' => '0',
-};
+use Test::Requires 'Test::Output';
 
 
 
@@ -34,9 +34,7 @@ $| = 1;
 
 
 # =begin testing SETUP
-use Test::Requires {
-    'Test::Output' => '0',
-};
+use Test::Requires 'Test::Output';
 
 
 
@@ -0,0 +1,86 @@
+#!/usr/bin/perl -w
+
+use strict;
+use Test::More 'no_plan';
+use Test::Fatal;
+$| = 1;
+
+
+
+# =begin testing SETUP
+{
+
+  package MyApp::Meta::Attribute::Labeled;
+  use Moose;
+  extends 'Moose::Meta::Attribute';
+
+  has label => (
+      is        => 'rw',
+      isa       => 'Str',
+      predicate => 'has_label',
+  );
+
+  package Moose::Meta::Attribute::Custom::Labeled;
+  sub register_implementation {'MyApp::Meta::Attribute::Labeled'}
+
+  package MyApp::Website;
+  use Moose;
+
+  has url => (
+      metaclass => 'Labeled',
+      is        => 'rw',
+      isa       => 'Str',
+      label     => "The site's URL",
+  );
+
+  has name => (
+      is  => 'rw',
+      isa => 'Str',
+  );
+
+  sub dump {
+      my $self = shift;
+
+      my $meta = $self->meta;
+
+      my $dump = '';
+
+      for my $attribute ( map { $meta->get_attribute($_) }
+          sort $meta->get_attribute_list ) {
+
+          if (   $attribute->isa('MyApp::Meta::Attribute::Labeled')
+              && $attribute->has_label ) {
+              $dump .= $attribute->label;
+          }
+          else {
+              $dump .= $attribute->name;
+          }
+
+          my $reader = $attribute->get_read_method;
+          $dump .= ": " . $self->$reader . "\n";
+      }
+
+      return $dump;
+  }
+
+  package main;
+
+  my $app = MyApp::Website->new( url => "http://google.com", name => "Google" );
+}
+
+
+
+# =begin testing
+{
+my $app = MyApp::Website->new( url => "http://google.com", name => "Google" );
+is(
+    $app->dump, q{name: Google
+The site's URL: http://google.com
+}, '... got the expected dump value'
+);
+}
+
+
+
+
+1;
@@ -1,86 +0,0 @@
-#!/usr/bin/perl -w
-
-use strict;
-use Test::More 'no_plan';
-use Test::Fatal;
-$| = 1;
-
-
-
-# =begin testing SETUP
-{
-
-  package MyApp::Meta::Attribute::Labeled;
-  use Moose;
-  extends 'Moose::Meta::Attribute';
-
-  has label => (
-      is        => 'rw',
-      isa       => 'Str',
-      predicate => 'has_label',
-  );
-
-  package Moose::Meta::Attribute::Custom::Labeled;
-  sub register_implementation {'MyApp::Meta::Attribute::Labeled'}
-
-  package MyApp::Website;
-  use Moose;
-
-  has url => (
-      metaclass => 'Labeled',
-      is        => 'rw',
-      isa       => 'Str',
-      label     => "The site's URL",
-  );
-
-  has name => (
-      is  => 'rw',
-      isa => 'Str',
-  );
-
-  sub dump {
-      my $self = shift;
-
-      my $meta = $self->meta;
-
-      my $dump = '';
-
-      for my $attribute ( map { $meta->get_attribute($_) }
-          sort $meta->get_attribute_list ) {
-
-          if (   $attribute->isa('MyApp::Meta::Attribute::Labeled')
-              && $attribute->has_label ) {
-              $dump .= $attribute->label;
-          }
-          else {
-              $dump .= $attribute->name;
-          }
-
-          my $reader = $attribute->get_read_method;
-          $dump .= ": " . $self->$reader . "\n";
-      }
-
-      return $dump;
-  }
-
-  package main;
-
-  my $app = MyApp::Website->new( url => "http://google.com", name => "Google" );
-}
-
-
-
-# =begin testing
-{
-my $app = MyApp::Website->new( url => "http://google.com", name => "Google" );
-is(
-    $app->dump, q{name: Google
-The site's URL: http://google.com
-}, '... got the expected dump value'
-);
-}
-
-
-
-
-1;
@@ -1,10 +1,8 @@
 use strict;
 use warnings;
-use Test::More;
 
-use Test::Requires {
-    'Test::Output' => '0.01', # skip all if not installed
-};
+use Test::More;
+use Test::Requires 'Test::Output';  # skip all if not installed
 
 # this test script ensures that my idiom of:
 # role: sub BUILD, after BUILD
@@ -1,8 +1,8 @@
-# See https://rt.cpan.org/Ticket/Display.html?id=46347
-
 use strict;
 use warnings;
 
+# See https://rt.cpan.org/Ticket/Display.html?id=46347
+
 use Test::More;
 use Test::Fatal;
 
@@ -50,6 +50,8 @@ use Moose::Meta::Role::Composite;
         Moose::Meta::Role::Application::RoleSummation->new->apply($c);
     }, undef, '... this composed okay' );
 
+    ok(!$c->is_anon, '... composite is not anonymous');
+
     ##... now nest 'em
     {
         my $c2 = Moose::Meta::Role::Composite->new(
@@ -74,6 +76,8 @@ use Moose::Meta::Role::Composite;
                 Role::Baz
                 Role::Gorch
             );
+
+        ok(!$c2->is_anon, '... composite is not anonymous');
     }
 }
 
@@ -4,9 +4,6 @@ use warnings;
 use Test::Builder::Tester;
 use Test::More;
 
-plan skip_all => 'These tests are only for Test::Builder 0.9x'
-    if Test::Builder->VERSION >= 1.005;
-
 use Test::Moose;
 
 {
@@ -1,70 +0,0 @@
-use strict;
-use warnings;
-
-use Test::More;
-
-BEGIN {
-    use Test::More;
-    plan skip_all => 'These tests are only for Test::Builder 1.005+'
-        if Test::Builder->VERSION < 1.005;
-}
-
-{
-    package Foo;
-    use Moose;
-}
-
-{
-    package Bar;
-    use Moose;
-}
-
-package main;
-
-use Test::Moose;
-use TB2::Tester;
-use TB2::History;   # FIXME - this should not need to be loaded here explicitly
-
-my ($ret1, $ret2);
-my $capture = capture {
-    $ret1 = with_immutable {
-        ok(Foo->meta->is_mutable, 'is mutable');
-    } qw(Foo);
-
-    $ret2 = with_immutable {
-        ok(Bar->meta->find_method_by_name('new'), 'can find "new" method');
-    } qw(Bar);
-};
-
-my $results = $capture->results;
-
-my @tests = (
-    [
-        'first test runs while Foo is mutable' => { name => 'is mutable',
-                                                    is_pass => 1,
-                                                   },
-    ],
-    [
-        'first test runs while Foo is immutable' => { name => 'is mutable',
-                                                      is_pass => 0,
-                                                    },
-    ],
-    [
-        'can find "new" while Bar is mutable'   => { name => 'can find "new" method',
-                                                     is_pass => 1,
-                                                   },
-    ],
-    [
-        'can find "new" while Bar is immutable' => { name => 'can find "new" method',
-                                                     is_pass => 1,
-                                                   },
-    ],
-);
-
-result_like(shift(@$results), $_->[1], $_->[0]) foreach @tests;
-
-ok(!$ret1, 'one of the is_immutable tests failed');
-ok($ret2, 'the find_method_by_name tests passed');
-
-done_testing;
-
@@ -1,10 +1,10 @@
+use strict;
+use warnings;
+
 # In the case where a child type constraint's parent constraint fails,
 # the exception should reference the parent type constraint that actually
 # failed instead of always referencing the child'd type constraint
 
-use strict;
-use warnings;
-
 use Test::More;
 use Test::Fatal;
 
@@ -269,5 +269,3 @@ The benefits of doing this are:
   them into two pieces (one for the interface with a bunch of requires(), and
   another for the actual impl with the problematic attrs (and stub methods to
   fix the accessors) and method modifiers (dunno if this can even work at all)
-
-
@@ -1,204 +0,0 @@
-use strict;
-use warnings;
-
-# Prevent namespace::autoclean from dying when we run tests from git checkout.
-use Class::MOP ();
-use Moose      ();
-BEGIN { $Class::MOP::VERSION ||= $Moose::VERSION ||= 3 }
-
-use Test::Fatal;
-use Test::Moose qw( with_immutable );
-use Test::More;
-
-use Test::Requires {
-    'Specio::Declare'           => '0.07',
-    'Specio::Library::Builtins' => '0.07',
-};
-
-{
-    package Foo;
-
-    use Moose;
-    use Specio::Library::Builtins;
-
-    has int => (
-        is  => 'ro',
-        isa => t('Int'),
-    );
-
-    has array_of_ints => (
-        is  => 'ro',
-        isa => t( 'ArrayRef', of => t('Int') ),
-    );
-
-    has hash_of_ints => (
-        is  => 'ro',
-        isa => t( 'HashRef', of => t('Int') ),
-    );
-}
-
-with_immutable(
-    sub {
-        my $is_immutable = shift;
-        subtest(
-            'Foo class' . ( $is_immutable ? ' (immutable)' : q{} ),
-            sub {
-
-                is(
-                    exception { Foo->new( int => 42 ) },
-                    undef,
-                    '42 is an acceptable int'
-                );
-
-                like(
-                    exception { Foo->new( int => 42.4 ) },
-                    qr/does not pass the type constraint.+for type named Int/,
-                    '42.4 is not an acceptable int'
-                );
-
-                is(
-                    exception { Foo->new( array_of_ints => [ 42, 84 ] ) },
-                    undef,
-                    '[ 42, 84 ] is an acceptable array of ints'
-                );
-
-                like(
-                    exception { Foo->new( array_of_ints => [ 42.4, 84 ] ) },
-                    qr/does not pass the type constraint.+for anonymous type/,
-                    '[ 42.4, 84 ] is an acceptable array of ints'
-                );
-
-                is(
-                    exception {
-                        Foo->new( hash_of_ints => { foo => 42, bar => 84 } );
-                    },
-                    undef,
-                    '{ foo => 42, bar => 84 } is an acceptable array of ints'
-                );
-
-                like(
-                    exception {
-                        Foo->new(
-                            hash_of_ints => { foo => 42.4, bar => 84 } );
-                    },
-                    qr/does not pass the type constraint.+for anonymous type/,
-                    '{ foo => 42.4, bar => 84 } is an acceptable array of ints'
-                );
-            }
-        );
-    },
-    'Foo'
-);
-
-{
-    package Bar;
-
-    use Moose;
-    use Specio::Declare;
-    use Specio::Library::Builtins;
-
-    my $array_of_ints = anon( parent => t( 'ArrayRef', of => t('Int') ) );
-
-    coerce(
-        $array_of_ints,
-        from  => t('Int'),
-        using => sub {
-            return [ $_[0] ];
-        }
-    );
-
-    has array_of_ints => (
-        is     => 'ro',
-        isa    => $array_of_ints,
-        coerce => 1,
-    );
-
-    my $hash_of_ints = anon( parent => t( 'HashRef', of => t('Int') ) );
-
-    coerce(
-        $hash_of_ints,
-        from  => t('Int'),
-        using => sub {
-            return { foo => $_[0] };
-        }
-    );
-
-    has hash_of_ints => (
-        is     => 'ro',
-        isa    => $hash_of_ints,
-        coerce => 1,
-    );
-}
-
-with_immutable(
-    sub {
-        my $is_immutable = shift;
-        subtest(
-            'Bar class' . ( $is_immutable ? ' (immutable)' : q{} ),
-            sub {
-
-                is(
-                    exception { Bar->new( array_of_ints => [ 42, 84 ] ) },
-                    undef,
-                    '[ 42, 84 ] is an acceptable array of ints'
-                );
-
-                like(
-                    exception { Bar->new( array_of_ints => [ 42.4, 84 ] ) },
-                    qr/does not pass the type constraint.+for anonymous type/,
-                    '[ 42.4, 84 ] is an acceptable array of ints'
-                );
-
-                {
-                    my $bar;
-                    is(
-                        exception { $bar = Bar->new( array_of_ints => 42 ) },
-                        undef,
-                        '42 is an acceptable array of ints with coercion'
-                    );
-
-                    is_deeply(
-                        $bar->array_of_ints(),
-                        [42],
-                        'int is coerced to single element arrayref'
-                    );
-                }
-
-                is(
-                    exception {
-                        Bar->new( hash_of_ints => { foo => 42, bar => 84 } );
-                    },
-                    undef,
-                    '{ foo => 42, bar => 84 } is an acceptable array of ints'
-                );
-
-                like(
-                    exception {
-                        Bar->new(
-                            hash_of_ints => { foo => 42.4, bar => 84 } );
-                    },
-                    qr/does not pass the type constraint.+for anonymous type/,
-                    '{ foo => 42.4, bar => 84 } is an acceptable array of ints'
-                );
-
-                {
-                    my $bar;
-                    is(
-                        exception { $bar = Bar->new( hash_of_ints => 42 ) },
-                        undef,
-                        '42 is an acceptable hash of ints with coercion'
-                    );
-
-                    is_deeply(
-                        $bar->hash_of_ints(),
-                        { foo => 42 },
-                        'int is coerced to single element hashref'
-                    );
-                }
-            }
-        );
-    },
-    'Bar'
-);
-
-done_testing();
@@ -3,11 +3,7 @@ use warnings;
 
 use Test::More;
 use Test::Fatal;
-
-use Test::Requires {
-    'IO::String' => '0.01', # skip all if not installed
-    'IO::File' => '0.01',
-};
+use Test::Requires qw(IO::String IO::File); # skip all if not installed
 
 {
     package Email::Moose;
@@ -0,0 +1,209 @@
+use strict;
+use warnings;
+
+# Prevent namespace::autoclean from dying when we run tests from git checkout.
+use Class::MOP ();
+use Moose      ();
+BEGIN { $Class::MOP::VERSION ||= $Moose::VERSION ||= 3 }
+
+use Test::Fatal;
+use Test::Moose qw( with_immutable );
+use Test::More;
+
+BEGIN {
+    plan skip_all => 'These tests requires Specio, which requires perl 5.010'
+        unless $] >= 5.010;
+}
+
+use Test::Requires {
+    'Specio::Declare'           => '0.10',
+    'Specio::Library::Builtins' => '0.10',
+};
+
+{
+    package Foo;
+
+    use Moose;
+    use Specio::Library::Builtins;
+
+    has int => (
+        is  => 'ro',
+        isa => t('Int'),
+    );
+
+    has array_of_ints => (
+        is  => 'ro',
+        isa => t( 'ArrayRef', of => t('Int') ),
+    );
+
+    has hash_of_ints => (
+        is  => 'ro',
+        isa => t( 'HashRef', of => t('Int') ),
+    );
+}
+
+with_immutable(
+    sub {
+        my $is_immutable = shift;
+        subtest(
+            'Foo class' . ( $is_immutable ? ' (immutable)' : q{} ),
+            sub {
+
+                is(
+                    exception { Foo->new( int => 42 ) },
+                    undef,
+                    '42 is an acceptable int'
+                );
+
+                like(
+                    exception { Foo->new( int => 42.4 ) },
+                    qr/does not pass the type constraint.+for type named Int/,
+                    '42.4 is not an acceptable int'
+                );
+
+                is(
+                    exception { Foo->new( array_of_ints => [ 42, 84 ] ) },
+                    undef,
+                    '[ 42, 84 ] is an acceptable array of ints'
+                );
+
+                like(
+                    exception { Foo->new( array_of_ints => [ 42.4, 84 ] ) },
+                    qr/does not pass the type constraint.+for anonymous type/,
+                    '[ 42.4, 84 ] is an acceptable array of ints'
+                );
+
+                is(
+                    exception {
+                        Foo->new( hash_of_ints => { foo => 42, bar => 84 } );
+                    },
+                    undef,
+                    '{ foo => 42, bar => 84 } is an acceptable array of ints'
+                );
+
+                like(
+                    exception {
+                        Foo->new(
+                            hash_of_ints => { foo => 42.4, bar => 84 } );
+                    },
+                    qr/does not pass the type constraint.+for anonymous type/,
+                    '{ foo => 42.4, bar => 84 } is an acceptable array of ints'
+                );
+            }
+        );
+    },
+    'Foo'
+);
+
+{
+    package Bar;
+
+    use Moose;
+    use Specio::Declare;
+    use Specio::Library::Builtins;
+
+    my $array_of_ints = anon( parent => t( 'ArrayRef', of => t('Int') ) );
+
+    coerce(
+        $array_of_ints,
+        from  => t('Int'),
+        using => sub {
+            return [ $_[0] ];
+        }
+    );
+
+    has array_of_ints => (
+        is     => 'ro',
+        isa    => $array_of_ints,
+        coerce => 1,
+    );
+
+    my $hash_of_ints = anon( parent => t( 'HashRef', of => t('Int') ) );
+
+    coerce(
+        $hash_of_ints,
+        from  => t('Int'),
+        using => sub {
+            return { foo => $_[0] };
+        }
+    );
+
+    has hash_of_ints => (
+        is     => 'ro',
+        isa    => $hash_of_ints,
+        coerce => 1,
+    );
+}
+
+with_immutable(
+    sub {
+        my $is_immutable = shift;
+        subtest(
+            'Bar class' . ( $is_immutable ? ' (immutable)' : q{} ),
+            sub {
+
+                is(
+                    exception { Bar->new( array_of_ints => [ 42, 84 ] ) },
+                    undef,
+                    '[ 42, 84 ] is an acceptable array of ints'
+                );
+
+                like(
+                    exception { Bar->new( array_of_ints => [ 42.4, 84 ] ) },
+                    qr/does not pass the type constraint.+for anonymous type/,
+                    '[ 42.4, 84 ] is an acceptable array of ints'
+                );
+
+                {
+                    my $bar;
+                    is(
+                        exception { $bar = Bar->new( array_of_ints => 42 ) },
+                        undef,
+                        '42 is an acceptable array of ints with coercion'
+                    );
+
+                    is_deeply(
+                        $bar->array_of_ints(),
+                        [42],
+                        'int is coerced to single element arrayref'
+                    );
+                }
+
+                is(
+                    exception {
+                        Bar->new( hash_of_ints => { foo => 42, bar => 84 } );
+                    },
+                    undef,
+                    '{ foo => 42, bar => 84 } is an acceptable array of ints'
+                );
+
+                like(
+                    exception {
+                        Bar->new(
+                            hash_of_ints => { foo => 42.4, bar => 84 } );
+                    },
+                    qr/does not pass the type constraint.+for anonymous type/,
+                    '{ foo => 42.4, bar => 84 } is an acceptable array of ints'
+                );
+
+                {
+                    my $bar;
+                    is(
+                        exception { $bar = Bar->new( hash_of_ints => 42 ) },
+                        undef,
+                        '42 is an acceptable hash of ints with coercion'
+                    );
+
+                    is_deeply(
+                        $bar->hash_of_ints(),
+                        { foo => 42 },
+                        'int is coerced to single element hashref'
+                    );
+                }
+            }
+        );
+    },
+    'Bar'
+);
+
+done_testing();
@@ -0,0 +1,99 @@
+use strict;
+use warnings;
+
+# this test was generated with Dist::Zilla::Plugin::Test::CheckBreaks 0.009
+
+use Test::More;
+
+SKIP: {
+    eval 'require Moose::Conflicts; Moose::Conflicts->check_conflicts';
+    skip('no Moose::Conflicts module found', 1) if not $INC{'Moose/Conflicts.pm'};
+
+    diag $@ if $@;
+    pass 'conflicts checked via Moose::Conflicts';
+}
+
+my $breaks = {
+  "Catalyst" => "<= 5.90049999",
+  "Config::MVP" => "<= 2.200004",
+  "Devel::REPL" => "<= 1.003020",
+  "Dist::Zilla::Plugin::Git" => "<= 2.016",
+  "Fey" => "<= 0.36",
+  "Fey::ORM" => "<= 0.42",
+  "File::ChangeNotify" => "<= 0.15",
+  "HTTP::Throwable" => "<= 0.017",
+  "KiokuDB" => "<= 0.51",
+  "Markdent" => "<= 0.16",
+  "Mason" => "<= 2.18",
+  "MooseX::ABC" => "<= 0.05",
+  "MooseX::Aliases" => "<= 0.08",
+  "MooseX::AlwaysCoerce" => "<= 0.13",
+  "MooseX::App" => "<= 1.22",
+  "MooseX::Attribute::Deflator" => "<= 2.1.7",
+  "MooseX::Attribute::Dependent" => "<= 1.1.0",
+  "MooseX::Attribute::Prototype" => "<= 0.10",
+  "MooseX::AttributeHelpers" => "<= 0.22",
+  "MooseX::AttributeIndexes" => "<= 1.0.0",
+  "MooseX::AttributeInflate" => "<= 0.02",
+  "MooseX::CascadeClearing" => "<= 0.03",
+  "MooseX::ClassAttribute" => "<= 0.26",
+  "MooseX::Constructor::AllErrors" => "<= 0.021",
+  "MooseX::Declare" => "<= 0.35",
+  "MooseX::FollowPBP" => "<= 0.02",
+  "MooseX::Getopt" => "<= 0.56",
+  "MooseX::InstanceTracking" => "<= 0.04",
+  "MooseX::LazyRequire" => "<= 0.06",
+  "MooseX::Meta::Attribute::Index" => "<= 0.04",
+  "MooseX::Meta::Attribute::Lvalue" => "<= 0.05",
+  "MooseX::Method::Signatures" => "<= 0.44",
+  "MooseX::MethodAttributes" => "<= 0.22",
+  "MooseX::NonMoose" => "<= 0.24",
+  "MooseX::Object::Pluggable" => "<= 0.0011",
+  "MooseX::POE" => "<= 0.214",
+  "MooseX::Params::Validate" => "<= 0.05",
+  "MooseX::PrivateSetters" => "<= 0.03",
+  "MooseX::Role::Cmd" => "<= 0.06",
+  "MooseX::Role::Parameterized" => "<= 1.00",
+  "MooseX::Role::WithOverloading" => "<= 0.07",
+  "MooseX::Runnable" => "<= 0.03",
+  "MooseX::Scaffold" => "<= 0.05",
+  "MooseX::SemiAffordanceAccessor" => "<= 0.05",
+  "MooseX::SetOnce" => "<= 0.100473",
+  "MooseX::Singleton" => "<= 0.25",
+  "MooseX::SlurpyConstructor" => "<= 1.1",
+  "MooseX::Storage" => "<= 0.42",
+  "MooseX::StrictConstructor" => "<= 0.12",
+  "MooseX::Traits" => "<= 0.11",
+  "MooseX::Types" => "<= 0.19",
+  "MooseX::Types::Parameterizable" => "<= 0.05",
+  "MooseX::Types::Set::Object" => "<= 0.03",
+  "MooseX::Types::Signal" => "<= 1.101930",
+  "MooseX::UndefTolerant" => "<= 0.11",
+  "PRANG" => "<= 0.14",
+  "Pod::Elemental" => "<= 0.093280",
+  "Pod::Weaver" => "<= 3.101638",
+  "Reaction" => "<= 0.002003",
+  "Test::Able" => "<= 0.10",
+  "Test::CleanNamespaces" => "<= 0.03",
+  "Test::Moose::More" => "<= 0.022",
+  "Test::TempDir" => "<= 0.05",
+  "Throwable" => "<= 0.102080",
+  "namespace::autoclean" => "<= 0.08"
+};
+
+use CPAN::Meta::Requirements;
+my $reqs = CPAN::Meta::Requirements->new;
+$reqs->add_string_requirement($_, $breaks->{$_}) foreach keys %$breaks;
+
+use CPAN::Meta::Check 0.007 'check_requirements';
+our $result = check_requirements($reqs, 'conflicts');
+
+if (my @breaks = grep { defined $result->{$_} } keys %$result)
+{
+    diag 'Breakages found with Moose:';
+    diag "$result->{$_}" for sort @breaks;
+    diag "\n", 'You should now update these modules!';
+}
+
+
+done_testing;
@@ -1,433 +0,0 @@
-use 5.006;
-use strict;
-use warnings;
-
-# this test was generated with Dist::Zilla::Plugin::Test::Compile 2.039
-
-use Test::More 0.94 tests => 358 + ($ENV{AUTHOR_TESTING} ? 1 : 0);
-
-
-
-my @module_files = (
-    'Class/MOP.pm',
-    'Class/MOP/Class/Immutable/Trait.pm',
-    'Class/MOP/Deprecated.pm',
-    'Class/MOP/Instance.pm',
-    'Class/MOP/Method.pm',
-    'Class/MOP/Method/Generated.pm',
-    'Class/MOP/Method/Meta.pm',
-    'Class/MOP/Method/Overload.pm',
-    'Class/MOP/MiniTrait.pm',
-    'Class/MOP/Mixin.pm',
-    'Class/MOP/Mixin/AttributeCore.pm',
-    'Class/MOP/Mixin/HasMethods.pm',
-    'Class/MOP/Object.pm',
-    'Moose.pm',
-    'Moose/Conflicts.pm',
-    'Moose/Deprecated.pm',
-    'Moose/Exception.pm',
-    'Moose/Exception/AccessorMustReadWrite.pm',
-    'Moose/Exception/AddParameterizableTypeTakesParameterizableType.pm',
-    'Moose/Exception/AddRoleTakesAMooseMetaRoleInstance.pm',
-    'Moose/Exception/AddRoleToARoleTakesAMooseMetaRole.pm',
-    'Moose/Exception/ApplyTakesABlessedInstance.pm',
-    'Moose/Exception/AttachToClassNeedsAClassMOPClassInstanceOrASubclass.pm',
-    'Moose/Exception/AttributeConflictInRoles.pm',
-    'Moose/Exception/AttributeConflictInSummation.pm',
-    'Moose/Exception/AttributeExtensionIsNotSupportedInRoles.pm',
-    'Moose/Exception/AttributeIsRequired.pm',
-    'Moose/Exception/AttributeMustBeAnClassMOPMixinAttributeCoreOrSubclass.pm',
-    'Moose/Exception/AttributeNamesDoNotMatch.pm',
-    'Moose/Exception/AttributeValueIsNotAnObject.pm',
-    'Moose/Exception/AttributeValueIsNotDefined.pm',
-    'Moose/Exception/AutoDeRefNeedsArrayRefOrHashRef.pm',
-    'Moose/Exception/BadOptionFormat.pm',
-    'Moose/Exception/BothBuilderAndDefaultAreNotAllowed.pm',
-    'Moose/Exception/BuilderDoesNotExist.pm',
-    'Moose/Exception/BuilderMethodNotSupportedForAttribute.pm',
-    'Moose/Exception/BuilderMethodNotSupportedForInlineAttribute.pm',
-    'Moose/Exception/BuilderMustBeAMethodName.pm',
-    'Moose/Exception/CallingMethodOnAnImmutableInstance.pm',
-    'Moose/Exception/CallingReadOnlyMethodOnAnImmutableInstance.pm',
-    'Moose/Exception/CanExtendOnlyClasses.pm',
-    'Moose/Exception/CanOnlyConsumeRole.pm',
-    'Moose/Exception/CanOnlyWrapBlessedCode.pm',
-    'Moose/Exception/CanReblessOnlyIntoASubclass.pm',
-    'Moose/Exception/CanReblessOnlyIntoASuperclass.pm',
-    'Moose/Exception/CannotAddAdditionalTypeCoercionsToUnion.pm',
-    'Moose/Exception/CannotAddAsAnAttributeToARole.pm',
-    'Moose/Exception/CannotApplyBaseClassRolesToRole.pm',
-    'Moose/Exception/CannotAssignValueToReadOnlyAccessor.pm',
-    'Moose/Exception/CannotAugmentIfLocalMethodPresent.pm',
-    'Moose/Exception/CannotAugmentNoSuperMethod.pm',
-    'Moose/Exception/CannotAutoDerefWithoutIsa.pm',
-    'Moose/Exception/CannotAutoDereferenceTypeConstraint.pm',
-    'Moose/Exception/CannotCalculateNativeType.pm',
-    'Moose/Exception/CannotCallAnAbstractBaseMethod.pm',
-    'Moose/Exception/CannotCallAnAbstractMethod.pm',
-    'Moose/Exception/CannotCoerceAWeakRef.pm',
-    'Moose/Exception/CannotCoerceAttributeWhichHasNoCoercion.pm',
-    'Moose/Exception/CannotCreateHigherOrderTypeWithoutATypeParameter.pm',
-    'Moose/Exception/CannotCreateMethodAliasLocalMethodIsPresent.pm',
-    'Moose/Exception/CannotCreateMethodAliasLocalMethodIsPresentInClass.pm',
-    'Moose/Exception/CannotDelegateLocalMethodIsPresent.pm',
-    'Moose/Exception/CannotDelegateWithoutIsa.pm',
-    'Moose/Exception/CannotFindDelegateMetaclass.pm',
-    'Moose/Exception/CannotFindType.pm',
-    'Moose/Exception/CannotFindTypeGivenToMatchOnType.pm',
-    'Moose/Exception/CannotFixMetaclassCompatibility.pm',
-    'Moose/Exception/CannotGenerateInlineConstraint.pm',
-    'Moose/Exception/CannotInitializeMooseMetaRoleComposite.pm',
-    'Moose/Exception/CannotInlineTypeConstraintCheck.pm',
-    'Moose/Exception/CannotLocatePackageInINC.pm',
-    'Moose/Exception/CannotMakeMetaclassCompatible.pm',
-    'Moose/Exception/CannotOverrideALocalMethod.pm',
-    'Moose/Exception/CannotOverrideBodyOfMetaMethods.pm',
-    'Moose/Exception/CannotOverrideLocalMethodIsPresent.pm',
-    'Moose/Exception/CannotOverrideNoSuperMethod.pm',
-    'Moose/Exception/CannotRegisterUnnamedTypeConstraint.pm',
-    'Moose/Exception/CannotUseLazyBuildAndDefaultSimultaneously.pm',
-    'Moose/Exception/CircularReferenceInAlso.pm',
-    'Moose/Exception/ClassDoesNotHaveInitMeta.pm',
-    'Moose/Exception/ClassDoesTheExcludedRole.pm',
-    'Moose/Exception/ClassNamesDoNotMatch.pm',
-    'Moose/Exception/CloneObjectExpectsAnInstanceOfMetaclass.pm',
-    'Moose/Exception/CodeBlockMustBeACodeRef.pm',
-    'Moose/Exception/CoercingWithoutCoercions.pm',
-    'Moose/Exception/CoercionAlreadyExists.pm',
-    'Moose/Exception/CoercionNeedsTypeConstraint.pm',
-    'Moose/Exception/ConflictDetectedInCheckRoleExclusions.pm',
-    'Moose/Exception/ConflictDetectedInCheckRoleExclusionsInToClass.pm',
-    'Moose/Exception/ConstructClassInstanceTakesPackageName.pm',
-    'Moose/Exception/CouldNotCreateMethod.pm',
-    'Moose/Exception/CouldNotCreateWriter.pm',
-    'Moose/Exception/CouldNotEvalConstructor.pm',
-    'Moose/Exception/CouldNotEvalDestructor.pm',
-    'Moose/Exception/CouldNotFindTypeConstraintToCoerceFrom.pm',
-    'Moose/Exception/CouldNotGenerateInlineAttributeMethod.pm',
-    'Moose/Exception/CouldNotLocateTypeConstraintForUnion.pm',
-    'Moose/Exception/CouldNotParseType.pm',
-    'Moose/Exception/CreateMOPClassTakesArrayRefOfAttributes.pm',
-    'Moose/Exception/CreateMOPClassTakesArrayRefOfSuperclasses.pm',
-    'Moose/Exception/CreateMOPClassTakesHashRefOfMethods.pm',
-    'Moose/Exception/CreateTakesArrayRefOfRoles.pm',
-    'Moose/Exception/CreateTakesHashRefOfAttributes.pm',
-    'Moose/Exception/CreateTakesHashRefOfMethods.pm',
-    'Moose/Exception/DefaultToMatchOnTypeMustBeCodeRef.pm',
-    'Moose/Exception/DelegationToAClassWhichIsNotLoaded.pm',
-    'Moose/Exception/DelegationToARoleWhichIsNotLoaded.pm',
-    'Moose/Exception/DelegationToATypeWhichIsNotAClass.pm',
-    'Moose/Exception/DoesRequiresRoleName.pm',
-    'Moose/Exception/EnumCalledWithAnArrayRefAndAdditionalArgs.pm',
-    'Moose/Exception/EnumValuesMustBeString.pm',
-    'Moose/Exception/ExtendsMissingArgs.pm',
-    'Moose/Exception/HandlesMustBeAHashRef.pm',
-    'Moose/Exception/IllegalInheritedOptions.pm',
-    'Moose/Exception/IllegalMethodTypeToAddMethodModifier.pm',
-    'Moose/Exception/IncompatibleMetaclassOfSuperclass.pm',
-    'Moose/Exception/InitMetaRequiresClass.pm',
-    'Moose/Exception/InitializeTakesUnBlessedPackageName.pm',
-    'Moose/Exception/InstanceBlessedIntoWrongClass.pm',
-    'Moose/Exception/InstanceMustBeABlessedReference.pm',
-    'Moose/Exception/InvalidArgPassedToMooseUtilMetaRole.pm',
-    'Moose/Exception/InvalidArgumentToMethod.pm',
-    'Moose/Exception/InvalidArgumentsToTraitAliases.pm',
-    'Moose/Exception/InvalidBaseTypeGivenToCreateParameterizedTypeConstraint.pm',
-    'Moose/Exception/InvalidHandleValue.pm',
-    'Moose/Exception/InvalidHasProvidedInARole.pm',
-    'Moose/Exception/InvalidNameForType.pm',
-    'Moose/Exception/InvalidRoleApplication.pm',
-    'Moose/Exception/InvalidTypeConstraint.pm',
-    'Moose/Exception/InvalidTypeGivenToCreateParameterizedTypeConstraint.pm',
-    'Moose/Exception/InvalidValueForIs.pm',
-    'Moose/Exception/IsaDoesNotDoTheRole.pm',
-    'Moose/Exception/IsaLacksDoesMethod.pm',
-    'Moose/Exception/LazyAttributeNeedsADefault.pm',
-    'Moose/Exception/Legacy.pm',
-    'Moose/Exception/MOPAttributeNewNeedsAttributeName.pm',
-    'Moose/Exception/MatchActionMustBeACodeRef.pm',
-    'Moose/Exception/MessageParameterMustBeCodeRef.pm',
-    'Moose/Exception/MetaclassIsAClassNotASubclassOfGivenMetaclass.pm',
-    'Moose/Exception/MetaclassIsARoleNotASubclassOfGivenMetaclass.pm',
-    'Moose/Exception/MetaclassIsNotASubclassOfGivenMetaclass.pm',
-    'Moose/Exception/MetaclassMustBeASubclassOfMooseMetaClass.pm',
-    'Moose/Exception/MetaclassMustBeASubclassOfMooseMetaRole.pm',
-    'Moose/Exception/MetaclassMustBeDerivedFromClassMOPClass.pm',
-    'Moose/Exception/MetaclassNotLoaded.pm',
-    'Moose/Exception/MetaclassTypeIncompatible.pm',
-    'Moose/Exception/MethodExpectedAMetaclassObject.pm',
-    'Moose/Exception/MethodExpectsFewerArgs.pm',
-    'Moose/Exception/MethodExpectsMoreArgs.pm',
-    'Moose/Exception/MethodModifierNeedsMethodName.pm',
-    'Moose/Exception/MethodNameConflictInRoles.pm',
-    'Moose/Exception/MethodNameNotFoundInInheritanceHierarchy.pm',
-    'Moose/Exception/MethodNameNotGiven.pm',
-    'Moose/Exception/MustDefineAMethodName.pm',
-    'Moose/Exception/MustDefineAnAttributeName.pm',
-    'Moose/Exception/MustHaveAtLeastOneValueToEnumerate.pm',
-    'Moose/Exception/MustPassAHashOfOptions.pm',
-    'Moose/Exception/MustPassAMooseMetaRoleInstanceOrSubclass.pm',
-    'Moose/Exception/MustPassAPackageNameOrAnExistingClassMOPPackageInstance.pm',
-    'Moose/Exception/MustPassEvenNumberOfArguments.pm',
-    'Moose/Exception/MustPassEvenNumberOfAttributeOptions.pm',
-    'Moose/Exception/MustProvideANameForTheAttribute.pm',
-    'Moose/Exception/MustSpecifyAtleastOneMethod.pm',
-    'Moose/Exception/MustSpecifyAtleastOneRole.pm',
-    'Moose/Exception/MustSpecifyAtleastOneRoleToApplicant.pm',
-    'Moose/Exception/MustSupplyAClassMOPAttributeInstance.pm',
-    'Moose/Exception/MustSupplyADelegateToMethod.pm',
-    'Moose/Exception/MustSupplyAMetaclass.pm',
-    'Moose/Exception/MustSupplyAMooseMetaAttributeInstance.pm',
-    'Moose/Exception/MustSupplyAnAccessorTypeToConstructWith.pm',
-    'Moose/Exception/MustSupplyAnAttributeToConstructWith.pm',
-    'Moose/Exception/MustSupplyArrayRefAsCurriedArguments.pm',
-    'Moose/Exception/MustSupplyPackageNameAndName.pm',
-    'Moose/Exception/NeedsTypeConstraintUnionForTypeCoercionUnion.pm',
-    'Moose/Exception/NeitherAttributeNorAttributeNameIsGiven.pm',
-    'Moose/Exception/NeitherClassNorClassNameIsGiven.pm',
-    'Moose/Exception/NeitherRoleNorRoleNameIsGiven.pm',
-    'Moose/Exception/NeitherTypeNorTypeNameIsGiven.pm',
-    'Moose/Exception/NoAttributeFoundInSuperClass.pm',
-    'Moose/Exception/NoBodyToInitializeInAnAbstractBaseClass.pm',
-    'Moose/Exception/NoCasesMatched.pm',
-    'Moose/Exception/NoConstraintCheckForTypeConstraint.pm',
-    'Moose/Exception/NoDestructorClassSpecified.pm',
-    'Moose/Exception/NoImmutableTraitSpecifiedForClass.pm',
-    'Moose/Exception/NoParentGivenToSubtype.pm',
-    'Moose/Exception/OnlyInstancesCanBeCloned.pm',
-    'Moose/Exception/OperatorIsRequired.pm',
-    'Moose/Exception/OverrideConflictInComposition.pm',
-    'Moose/Exception/OverrideConflictInSummation.pm',
-    'Moose/Exception/PackageDoesNotUseMooseExporter.pm',
-    'Moose/Exception/PackageNameAndNameParamsNotGivenToWrap.pm',
-    'Moose/Exception/PackagesAndModulesAreNotCachable.pm',
-    'Moose/Exception/ParameterIsNotSubtypeOfParent.pm',
-    'Moose/Exception/ReferencesAreNotAllowedAsDefault.pm',
-    'Moose/Exception/RequiredAttributeLacksInitialization.pm',
-    'Moose/Exception/RequiredAttributeNeedsADefault.pm',
-    'Moose/Exception/RequiredMethodsImportedByClass.pm',
-    'Moose/Exception/RequiredMethodsNotImplementedByClass.pm',
-    'Moose/Exception/Role/Attribute.pm',
-    'Moose/Exception/Role/AttributeName.pm',
-    'Moose/Exception/Role/Class.pm',
-    'Moose/Exception/Role/EitherAttributeOrAttributeName.pm',
-    'Moose/Exception/Role/Instance.pm',
-    'Moose/Exception/Role/InvalidAttributeOptions.pm',
-    'Moose/Exception/Role/Method.pm',
-    'Moose/Exception/Role/ParamsHash.pm',
-    'Moose/Exception/Role/Role.pm',
-    'Moose/Exception/Role/RoleForCreate.pm',
-    'Moose/Exception/Role/RoleForCreateMOPClass.pm',
-    'Moose/Exception/Role/TypeConstraint.pm',
-    'Moose/Exception/RoleDoesTheExcludedRole.pm',
-    'Moose/Exception/RoleExclusionConflict.pm',
-    'Moose/Exception/RoleNameRequired.pm',
-    'Moose/Exception/RoleNameRequiredForMooseMetaRole.pm',
-    'Moose/Exception/RoleNamesDoNotMatch.pm',
-    'Moose/Exception/RolesDoNotSupportAugment.pm',
-    'Moose/Exception/RolesDoNotSupportExtends.pm',
-    'Moose/Exception/RolesDoNotSupportInner.pm',
-    'Moose/Exception/RolesDoNotSupportRegexReferencesForMethodModifiers.pm',
-    'Moose/Exception/RolesInCreateTakesAnArrayRef.pm',
-    'Moose/Exception/RolesListMustBeInstancesOfMooseMetaRole.pm',
-    'Moose/Exception/SingleParamsToNewMustBeHashRef.pm',
-    'Moose/Exception/TriggerMustBeACodeRef.pm',
-    'Moose/Exception/TypeConstraintCannotBeUsedForAParameterizableType.pm',
-    'Moose/Exception/TypeConstraintIsAlreadyCreated.pm',
-    'Moose/Exception/TypeNamesDoNotMatch.pm',
-    'Moose/Exception/TypeParameterMustBeMooseMetaType.pm',
-    'Moose/Exception/UnableToCanonicalizeHandles.pm',
-    'Moose/Exception/UnableToCanonicalizeNonRolePackage.pm',
-    'Moose/Exception/UnableToRecognizeDelegateMetaclass.pm',
-    'Moose/Exception/UndefinedHashKeysPassedToMethod.pm',
-    'Moose/Exception/UnionCalledWithAnArrayRefAndAdditionalArgs.pm',
-    'Moose/Exception/UnionTakesAtleastTwoTypeNames.pm',
-    'Moose/Exception/ValidationFailedForInlineTypeConstraint.pm',
-    'Moose/Exception/ValidationFailedForTypeConstraint.pm',
-    'Moose/Exception/WrapTakesACodeRefToBless.pm',
-    'Moose/Exception/WrongTypeConstraintGiven.pm',
-    'Moose/Exporter.pm',
-    'Moose/Meta/Attribute/Native/Trait.pm',
-    'Moose/Meta/Attribute/Native/Trait/Array.pm',
-    'Moose/Meta/Attribute/Native/Trait/Bool.pm',
-    'Moose/Meta/Attribute/Native/Trait/Code.pm',
-    'Moose/Meta/Attribute/Native/Trait/Counter.pm',
-    'Moose/Meta/Attribute/Native/Trait/Hash.pm',
-    'Moose/Meta/Attribute/Native/Trait/Number.pm',
-    'Moose/Meta/Attribute/Native/Trait/String.pm',
-    'Moose/Meta/Class.pm',
-    'Moose/Meta/Class/Immutable/Trait.pm',
-    'Moose/Meta/Instance.pm',
-    'Moose/Meta/Method.pm',
-    'Moose/Meta/Method/Accessor.pm',
-    'Moose/Meta/Method/Accessor/Native.pm',
-    'Moose/Meta/Method/Accessor/Native/Array.pm',
-    'Moose/Meta/Method/Accessor/Native/Array/Writer.pm',
-    'Moose/Meta/Method/Accessor/Native/Array/accessor.pm',
-    'Moose/Meta/Method/Accessor/Native/Array/clear.pm',
-    'Moose/Meta/Method/Accessor/Native/Array/count.pm',
-    'Moose/Meta/Method/Accessor/Native/Array/delete.pm',
-    'Moose/Meta/Method/Accessor/Native/Array/elements.pm',
-    'Moose/Meta/Method/Accessor/Native/Array/first.pm',
-    'Moose/Meta/Method/Accessor/Native/Array/first_index.pm',
-    'Moose/Meta/Method/Accessor/Native/Array/get.pm',
-    'Moose/Meta/Method/Accessor/Native/Array/grep.pm',
-    'Moose/Meta/Method/Accessor/Native/Array/insert.pm',
-    'Moose/Meta/Method/Accessor/Native/Array/is_empty.pm',
-    'Moose/Meta/Method/Accessor/Native/Array/join.pm',
-    'Moose/Meta/Method/Accessor/Native/Array/map.pm',
-    'Moose/Meta/Method/Accessor/Native/Array/natatime.pm',
-    'Moose/Meta/Method/Accessor/Native/Array/pop.pm',
-    'Moose/Meta/Method/Accessor/Native/Array/push.pm',
-    'Moose/Meta/Method/Accessor/Native/Array/reduce.pm',
-    'Moose/Meta/Method/Accessor/Native/Array/set.pm',
-    'Moose/Meta/Method/Accessor/Native/Array/shallow_clone.pm',
-    'Moose/Meta/Method/Accessor/Native/Array/shift.pm',
-    'Moose/Meta/Method/Accessor/Native/Array/shuffle.pm',
-    'Moose/Meta/Method/Accessor/Native/Array/sort.pm',
-    'Moose/Meta/Method/Accessor/Native/Array/sort_in_place.pm',
-    'Moose/Meta/Method/Accessor/Native/Array/splice.pm',
-    'Moose/Meta/Method/Accessor/Native/Array/uniq.pm',
-    'Moose/Meta/Method/Accessor/Native/Array/unshift.pm',
-    'Moose/Meta/Method/Accessor/Native/Bool/not.pm',
-    'Moose/Meta/Method/Accessor/Native/Bool/set.pm',
-    'Moose/Meta/Method/Accessor/Native/Bool/toggle.pm',
-    'Moose/Meta/Method/Accessor/Native/Bool/unset.pm',
-    'Moose/Meta/Method/Accessor/Native/Code/execute.pm',
-    'Moose/Meta/Method/Accessor/Native/Code/execute_method.pm',
-    'Moose/Meta/Method/Accessor/Native/Collection.pm',
-    'Moose/Meta/Method/Accessor/Native/Counter/Writer.pm',
-    'Moose/Meta/Method/Accessor/Native/Counter/dec.pm',
-    'Moose/Meta/Method/Accessor/Native/Counter/inc.pm',
-    'Moose/Meta/Method/Accessor/Native/Counter/reset.pm',
-    'Moose/Meta/Method/Accessor/Native/Counter/set.pm',
-    'Moose/Meta/Method/Accessor/Native/Hash.pm',
-    'Moose/Meta/Method/Accessor/Native/Hash/Writer.pm',
-    'Moose/Meta/Method/Accessor/Native/Hash/accessor.pm',
-    'Moose/Meta/Method/Accessor/Native/Hash/clear.pm',
-    'Moose/Meta/Method/Accessor/Native/Hash/count.pm',
-    'Moose/Meta/Method/Accessor/Native/Hash/defined.pm',
-    'Moose/Meta/Method/Accessor/Native/Hash/delete.pm',
-    'Moose/Meta/Method/Accessor/Native/Hash/elements.pm',
-    'Moose/Meta/Method/Accessor/Native/Hash/exists.pm',
-    'Moose/Meta/Method/Accessor/Native/Hash/get.pm',
-    'Moose/Meta/Method/Accessor/Native/Hash/is_empty.pm',
-    'Moose/Meta/Method/Accessor/Native/Hash/keys.pm',
-    'Moose/Meta/Method/Accessor/Native/Hash/kv.pm',
-    'Moose/Meta/Method/Accessor/Native/Hash/set.pm',
-    'Moose/Meta/Method/Accessor/Native/Hash/shallow_clone.pm',
-    'Moose/Meta/Method/Accessor/Native/Hash/values.pm',
-    'Moose/Meta/Method/Accessor/Native/Number/abs.pm',
-    'Moose/Meta/Method/Accessor/Native/Number/add.pm',
-    'Moose/Meta/Method/Accessor/Native/Number/div.pm',
-    'Moose/Meta/Method/Accessor/Native/Number/mod.pm',
-    'Moose/Meta/Method/Accessor/Native/Number/mul.pm',
-    'Moose/Meta/Method/Accessor/Native/Number/set.pm',
-    'Moose/Meta/Method/Accessor/Native/Number/sub.pm',
-    'Moose/Meta/Method/Accessor/Native/Reader.pm',
-    'Moose/Meta/Method/Accessor/Native/String/append.pm',
-    'Moose/Meta/Method/Accessor/Native/String/chomp.pm',
-    'Moose/Meta/Method/Accessor/Native/String/chop.pm',
-    'Moose/Meta/Method/Accessor/Native/String/clear.pm',
-    'Moose/Meta/Method/Accessor/Native/String/inc.pm',
-    'Moose/Meta/Method/Accessor/Native/String/length.pm',
-    'Moose/Meta/Method/Accessor/Native/String/match.pm',
-    'Moose/Meta/Method/Accessor/Native/String/prepend.pm',
-    'Moose/Meta/Method/Accessor/Native/String/replace.pm',
-    'Moose/Meta/Method/Accessor/Native/String/substr.pm',
-    'Moose/Meta/Method/Accessor/Native/Writer.pm',
-    'Moose/Meta/Method/Augmented.pm',
-    'Moose/Meta/Method/Constructor.pm',
-    'Moose/Meta/Method/Delegation.pm',
-    'Moose/Meta/Method/Destructor.pm',
-    'Moose/Meta/Method/Meta.pm',
-    'Moose/Meta/Method/Overridden.pm',
-    'Moose/Meta/Object/Trait.pm',
-    'Moose/Meta/Role.pm',
-    'Moose/Meta/Role/Application.pm',
-    'Moose/Meta/Role/Application/RoleSummation.pm',
-    'Moose/Meta/Role/Application/ToClass.pm',
-    'Moose/Meta/Role/Application/ToInstance.pm',
-    'Moose/Meta/Role/Application/ToRole.pm',
-    'Moose/Meta/Role/Composite.pm',
-    'Moose/Meta/Role/Method.pm',
-    'Moose/Meta/Role/Method/Conflicting.pm',
-    'Moose/Meta/Role/Method/Required.pm',
-    'Moose/Meta/TypeCoercion.pm',
-    'Moose/Meta/TypeCoercion/Union.pm',
-    'Moose/Meta/TypeConstraint.pm',
-    'Moose/Meta/TypeConstraint/Registry.pm',
-    'Moose/Object.pm',
-    'Moose/Role.pm',
-    'Moose/Util.pm',
-    'Moose/Util/MetaRole.pm',
-    'Moose/Util/TypeConstraints.pm',
-    'Moose/Util/TypeConstraints/Builtins.pm',
-    'Test/Moose.pm',
-    'metaclass.pm',
-    'oose.pm'
-);
-
-my @scripts = (
-    'bin/moose-outdated'
-);
-
-# no fake home requested
-
-my $inc_switch = -d 'blib' ? '-Mblib' : '-Ilib';
-
-use File::Spec;
-use IPC::Open3;
-use IO::Handle;
-
-open my $stdin, '<', File::Spec->devnull or die "can't open devnull: $!";
-
-my @warnings;
-for my $lib (@module_files)
-{
-    # see L<perlfaq8/How can I capture STDERR from an external command?>
-    my $stderr = IO::Handle->new;
-
-    my $pid = open3($stdin, '>&STDERR', $stderr, $^X, $inc_switch, '-e', "require q[$lib]");
-    binmode $stderr, ':crlf' if $^O eq 'MSWin32';
-    my @_warnings = <$stderr>;
-    waitpid($pid, 0);
-    is($?, 0, "$lib loaded ok");
-
-    if (@_warnings)
-    {
-        warn @_warnings;
-        push @warnings, @_warnings;
-    }
-}
-
-foreach my $file (@scripts)
-{ SKIP: {
-    open my $fh, '<', $file or warn("Unable to open $file: $!"), next;
-    my $line = <$fh>;
-    close $fh and skip("$file isn't perl", 1) unless $line =~ /^#!.*?\bperl\b\s*(.*)$/;
-
-    my @flags = $1 ? split(/\s+/, $1) : ();
-
-    my $stderr = IO::Handle->new;
-
-    my $pid = open3($stdin, '>&STDERR', $stderr, $^X, $inc_switch, @flags, '-c', $file);
-    binmode $stderr, ':crlf' if $^O eq 'MSWin32';
-    my @_warnings = <$stderr>;
-    waitpid($pid, 0);
-    is($?, 0, "$file compiled ok");
-
-   # in older perls, -c output is simply the file portion of the path being tested
-    if (@_warnings = grep { !/\bsyntax OK$/ }
-        grep { chomp; $_ ne (File::Spec->splitpath($file))[2] } @_warnings)
-    {
-        warn @_warnings;
-        push @warnings, @_warnings;
-    }
-} }
-
-
-
-is(scalar(@warnings), 0, 'no warnings found') if $ENV{AUTHOR_TESTING};
-
-BAIL_OUT("Compilation problems") if !Test::More->builder->is_passing;
@@ -15,12 +15,70 @@ use Moose::Util::TypeConstraints;
     sub myname { "I'm a role" }
 }
 
-no_leaks_ok(
-    sub {
-        Moose::Meta::Class->create_anon_class->new_object;
-    },
-    'anonymous class with no roles is leak-free'
-);
+{
+    package Fake::DateTime;
+    use Moose;
+
+    has 'string_repr' => ( is => 'ro' );
+
+    package Mortgage;
+    use Moose;
+    use Moose::Util::TypeConstraints;
+
+    coerce 'Fake::DateTime' => from 'Str' =>
+        via { Fake::DateTime->new( string_repr => $_ ) };
+
+    has 'closing_date' => (
+        is      => 'rw',
+        isa     => 'Fake::DateTime',
+        coerce  => 1,
+        trigger => sub {
+            my ( $self, $val ) = @_;
+            ::pass('... trigger is being called');
+            ::isa_ok( $self->closing_date, 'Fake::DateTime' );
+            ::isa_ok( $val,                'Fake::DateTime' );
+        }
+    );
+}
+
+{
+    package Man;
+    use Moose;
+
+    my @actions;
+
+    sub live {
+        push @actions, 'live';
+    }
+
+    sub create {
+        push @actions, 'create';
+    }
+
+    sub breathe {
+        push @actions, 'breathe';
+    }
+
+    package Earth;
+    use Moose;
+    use Moose::Util::TypeConstraints;
+
+    has man => (
+        isa     => 'Man',
+        handles => [qw( live create breathe )],
+    );
+}
+
+
+{
+    local $TODO = 'anonymous classes leak on 5.8' if $] < 5.010;
+    no_leaks_ok(
+        sub {
+            Moose::Meta::Class->create_anon_class->new_object;
+        },
+        'anonymous class with no roles is leak-free'
+    );
+}
 
 no_leaks_ok(
     sub {
@@ -108,5 +166,69 @@ no_leaks_ok(
     memory_cycle_ok($Str_or_Undef, 'union types do not leak');
 }
 
+{
+    my $mtg = Mortgage->new( closing_date => 'yesterday' );
+    $mtg->closing_date;
+    Mortgage->meta->make_immutable;
+
+    memory_cycle_ok($mtg->meta, 'meta (triggers/coerce) is cycle-free');
+}
+
+{
+    local $TODO = 'meta cycles exist at the moment';
+    memory_cycle_ok(Earth->new->meta, 'meta (handles) is cycle-free');
+    memory_cycle_ok(Earth->meta,      'meta (class) is cycle-free');
+}
+
+{
+    my $Point = Class::MOP::Class->create('Point' => (
+        version    => '0.01',
+        attributes => [
+            Class::MOP::Attribute->new('x' => (
+                reader   => 'x',
+                init_arg => 'x'
+            )),
+            Class::MOP::Attribute->new('y' => (
+                accessor => 'y',
+                init_arg => 'y'
+            )),
+        ],
+        methods => {
+            'new' => sub {
+                my $class = shift;
+                my $instance = $class->meta->new_object(@_);
+                bless $instance => $class;
+            },
+            'clear' => sub {
+                my $self = shift;
+                $self->{'x'} = 0;
+                $self->{'y'} = 0;
+            }
+        }
+    ));
+
+    my $Point3D = Class::MOP::Class->create('Point3D' => (
+        version      => '0.01',
+        superclasses => [ 'Point' ],
+        attributes => [
+            Class::MOP::Attribute->new('z' => (
+                default  => 123
+            )),
+        ],
+        methods => {
+            'clear' => sub {
+                my $self = shift;
+                $self->{'z'} = 0;
+                $self->SUPER::clear();
+            }
+        }
+    ));
+
+    local $TODO = 'CMOP cycles exist at the moment';
+    memory_cycle_ok($Point3D,       'Point3D is cycle-free');
+    memory_cycle_ok($Point,         'Point is cycle-free');
+    memory_cycle_ok($Point3D->meta, 'Point3D meta is cycle-free');
+    memory_cycle_ok($Point->meta,   'Point meta is cycle-free');
+}
 
 done_testing;
@@ -0,0 +1,432 @@
+use 5.006;
+use strict;
+use warnings;
+
+# this test was generated with Dist::Zilla::Plugin::Test::Compile 2.043
+
+use Test::More 0.94 tests => 357 + ($ENV{AUTHOR_TESTING} ? 1 : 0);
+
+
+
+my @module_files = (
+    'Class/MOP.pm',
+    'Class/MOP/Class/Immutable/Trait.pm',
+    'Class/MOP/Deprecated.pm',
+    'Class/MOP/Instance.pm',
+    'Class/MOP/Method.pm',
+    'Class/MOP/Method/Generated.pm',
+    'Class/MOP/Method/Meta.pm',
+    'Class/MOP/Method/Overload.pm',
+    'Class/MOP/MiniTrait.pm',
+    'Class/MOP/Mixin.pm',
+    'Class/MOP/Mixin/AttributeCore.pm',
+    'Class/MOP/Mixin/HasMethods.pm',
+    'Class/MOP/Object.pm',
+    'Moose.pm',
+    'Moose/Conflicts.pm',
+    'Moose/Deprecated.pm',
+    'Moose/Exception.pm',
+    'Moose/Exception/AccessorMustReadWrite.pm',
+    'Moose/Exception/AddParameterizableTypeTakesParameterizableType.pm',
+    'Moose/Exception/AddRoleTakesAMooseMetaRoleInstance.pm',
+    'Moose/Exception/AddRoleToARoleTakesAMooseMetaRole.pm',
+    'Moose/Exception/ApplyTakesABlessedInstance.pm',
+    'Moose/Exception/AttachToClassNeedsAClassMOPClassInstanceOrASubclass.pm',
+    'Moose/Exception/AttributeConflictInRoles.pm',
+    'Moose/Exception/AttributeConflictInSummation.pm',
+    'Moose/Exception/AttributeExtensionIsNotSupportedInRoles.pm',
+    'Moose/Exception/AttributeIsRequired.pm',
+    'Moose/Exception/AttributeMustBeAnClassMOPMixinAttributeCoreOrSubclass.pm',
+    'Moose/Exception/AttributeNamesDoNotMatch.pm',
+    'Moose/Exception/AttributeValueIsNotAnObject.pm',
+    'Moose/Exception/AttributeValueIsNotDefined.pm',
+    'Moose/Exception/AutoDeRefNeedsArrayRefOrHashRef.pm',
+    'Moose/Exception/BadOptionFormat.pm',
+    'Moose/Exception/BothBuilderAndDefaultAreNotAllowed.pm',
+    'Moose/Exception/BuilderDoesNotExist.pm',
+    'Moose/Exception/BuilderMethodNotSupportedForAttribute.pm',
+    'Moose/Exception/BuilderMethodNotSupportedForInlineAttribute.pm',
+    'Moose/Exception/BuilderMustBeAMethodName.pm',
+    'Moose/Exception/CallingMethodOnAnImmutableInstance.pm',
+    'Moose/Exception/CallingReadOnlyMethodOnAnImmutableInstance.pm',
+    'Moose/Exception/CanExtendOnlyClasses.pm',
+    'Moose/Exception/CanOnlyConsumeRole.pm',
+    'Moose/Exception/CanOnlyWrapBlessedCode.pm',
+    'Moose/Exception/CanReblessOnlyIntoASubclass.pm',
+    'Moose/Exception/CanReblessOnlyIntoASuperclass.pm',
+    'Moose/Exception/CannotAddAdditionalTypeCoercionsToUnion.pm',
+    'Moose/Exception/CannotAddAsAnAttributeToARole.pm',
+    'Moose/Exception/CannotApplyBaseClassRolesToRole.pm',
+    'Moose/Exception/CannotAssignValueToReadOnlyAccessor.pm',
+    'Moose/Exception/CannotAugmentIfLocalMethodPresent.pm',
+    'Moose/Exception/CannotAugmentNoSuperMethod.pm',
+    'Moose/Exception/CannotAutoDerefWithoutIsa.pm',
+    'Moose/Exception/CannotAutoDereferenceTypeConstraint.pm',
+    'Moose/Exception/CannotCalculateNativeType.pm',
+    'Moose/Exception/CannotCallAnAbstractBaseMethod.pm',
+    'Moose/Exception/CannotCallAnAbstractMethod.pm',
+    'Moose/Exception/CannotCoerceAWeakRef.pm',
+    'Moose/Exception/CannotCoerceAttributeWhichHasNoCoercion.pm',
+    'Moose/Exception/CannotCreateHigherOrderTypeWithoutATypeParameter.pm',
+    'Moose/Exception/CannotCreateMethodAliasLocalMethodIsPresent.pm',
+    'Moose/Exception/CannotCreateMethodAliasLocalMethodIsPresentInClass.pm',
+    'Moose/Exception/CannotDelegateLocalMethodIsPresent.pm',
+    'Moose/Exception/CannotDelegateWithoutIsa.pm',
+    'Moose/Exception/CannotFindDelegateMetaclass.pm',
+    'Moose/Exception/CannotFindType.pm',
+    'Moose/Exception/CannotFindTypeGivenToMatchOnType.pm',
+    'Moose/Exception/CannotFixMetaclassCompatibility.pm',
+    'Moose/Exception/CannotGenerateInlineConstraint.pm',
+    'Moose/Exception/CannotInitializeMooseMetaRoleComposite.pm',
+    'Moose/Exception/CannotInlineTypeConstraintCheck.pm',
+    'Moose/Exception/CannotLocatePackageInINC.pm',
+    'Moose/Exception/CannotMakeMetaclassCompatible.pm',
+    'Moose/Exception/CannotOverrideALocalMethod.pm',
+    'Moose/Exception/CannotOverrideBodyOfMetaMethods.pm',
+    'Moose/Exception/CannotOverrideLocalMethodIsPresent.pm',
+    'Moose/Exception/CannotOverrideNoSuperMethod.pm',
+    'Moose/Exception/CannotRegisterUnnamedTypeConstraint.pm',
+    'Moose/Exception/CannotUseLazyBuildAndDefaultSimultaneously.pm',
+    'Moose/Exception/CircularReferenceInAlso.pm',
+    'Moose/Exception/ClassDoesNotHaveInitMeta.pm',
+    'Moose/Exception/ClassDoesTheExcludedRole.pm',
+    'Moose/Exception/ClassNamesDoNotMatch.pm',
+    'Moose/Exception/CloneObjectExpectsAnInstanceOfMetaclass.pm',
+    'Moose/Exception/CodeBlockMustBeACodeRef.pm',
+    'Moose/Exception/CoercingWithoutCoercions.pm',
+    'Moose/Exception/CoercionAlreadyExists.pm',
+    'Moose/Exception/CoercionNeedsTypeConstraint.pm',
+    'Moose/Exception/ConflictDetectedInCheckRoleExclusions.pm',
+    'Moose/Exception/ConflictDetectedInCheckRoleExclusionsInToClass.pm',
+    'Moose/Exception/ConstructClassInstanceTakesPackageName.pm',
+    'Moose/Exception/CouldNotCreateMethod.pm',
+    'Moose/Exception/CouldNotCreateWriter.pm',
+    'Moose/Exception/CouldNotEvalConstructor.pm',
+    'Moose/Exception/CouldNotEvalDestructor.pm',
+    'Moose/Exception/CouldNotFindTypeConstraintToCoerceFrom.pm',
+    'Moose/Exception/CouldNotGenerateInlineAttributeMethod.pm',
+    'Moose/Exception/CouldNotLocateTypeConstraintForUnion.pm',
+    'Moose/Exception/CouldNotParseType.pm',
+    'Moose/Exception/CreateMOPClassTakesArrayRefOfAttributes.pm',
+    'Moose/Exception/CreateMOPClassTakesArrayRefOfSuperclasses.pm',
+    'Moose/Exception/CreateMOPClassTakesHashRefOfMethods.pm',
+    'Moose/Exception/CreateTakesArrayRefOfRoles.pm',
+    'Moose/Exception/CreateTakesHashRefOfAttributes.pm',
+    'Moose/Exception/CreateTakesHashRefOfMethods.pm',
+    'Moose/Exception/DefaultToMatchOnTypeMustBeCodeRef.pm',
+    'Moose/Exception/DelegationToAClassWhichIsNotLoaded.pm',
+    'Moose/Exception/DelegationToARoleWhichIsNotLoaded.pm',
+    'Moose/Exception/DelegationToATypeWhichIsNotAClass.pm',
+    'Moose/Exception/DoesRequiresRoleName.pm',
+    'Moose/Exception/EnumCalledWithAnArrayRefAndAdditionalArgs.pm',
+    'Moose/Exception/EnumValuesMustBeString.pm',
+    'Moose/Exception/ExtendsMissingArgs.pm',
+    'Moose/Exception/HandlesMustBeAHashRef.pm',
+    'Moose/Exception/IllegalInheritedOptions.pm',
+    'Moose/Exception/IllegalMethodTypeToAddMethodModifier.pm',
+    'Moose/Exception/IncompatibleMetaclassOfSuperclass.pm',
+    'Moose/Exception/InitMetaRequiresClass.pm',
+    'Moose/Exception/InitializeTakesUnBlessedPackageName.pm',
+    'Moose/Exception/InstanceBlessedIntoWrongClass.pm',
+    'Moose/Exception/InstanceMustBeABlessedReference.pm',
+    'Moose/Exception/InvalidArgPassedToMooseUtilMetaRole.pm',
+    'Moose/Exception/InvalidArgumentToMethod.pm',
+    'Moose/Exception/InvalidArgumentsToTraitAliases.pm',
+    'Moose/Exception/InvalidBaseTypeGivenToCreateParameterizedTypeConstraint.pm',
+    'Moose/Exception/InvalidHandleValue.pm',
+    'Moose/Exception/InvalidHasProvidedInARole.pm',
+    'Moose/Exception/InvalidNameForType.pm',
+    'Moose/Exception/InvalidRoleApplication.pm',
+    'Moose/Exception/InvalidTypeConstraint.pm',
+    'Moose/Exception/InvalidTypeGivenToCreateParameterizedTypeConstraint.pm',
+    'Moose/Exception/InvalidValueForIs.pm',
+    'Moose/Exception/IsaDoesNotDoTheRole.pm',
+    'Moose/Exception/IsaLacksDoesMethod.pm',
+    'Moose/Exception/LazyAttributeNeedsADefault.pm',
+    'Moose/Exception/Legacy.pm',
+    'Moose/Exception/MOPAttributeNewNeedsAttributeName.pm',
+    'Moose/Exception/MatchActionMustBeACodeRef.pm',
+    'Moose/Exception/MessageParameterMustBeCodeRef.pm',
+    'Moose/Exception/MetaclassIsAClassNotASubclassOfGivenMetaclass.pm',
+    'Moose/Exception/MetaclassIsARoleNotASubclassOfGivenMetaclass.pm',
+    'Moose/Exception/MetaclassIsNotASubclassOfGivenMetaclass.pm',
+    'Moose/Exception/MetaclassMustBeASubclassOfMooseMetaClass.pm',
+    'Moose/Exception/MetaclassMustBeASubclassOfMooseMetaRole.pm',
+    'Moose/Exception/MetaclassMustBeDerivedFromClassMOPClass.pm',
+    'Moose/Exception/MetaclassNotLoaded.pm',
+    'Moose/Exception/MetaclassTypeIncompatible.pm',
+    'Moose/Exception/MethodExpectedAMetaclassObject.pm',
+    'Moose/Exception/MethodExpectsFewerArgs.pm',
+    'Moose/Exception/MethodExpectsMoreArgs.pm',
+    'Moose/Exception/MethodModifierNeedsMethodName.pm',
+    'Moose/Exception/MethodNameConflictInRoles.pm',
+    'Moose/Exception/MethodNameNotFoundInInheritanceHierarchy.pm',
+    'Moose/Exception/MethodNameNotGiven.pm',
+    'Moose/Exception/MustDefineAMethodName.pm',
+    'Moose/Exception/MustDefineAnAttributeName.pm',
+    'Moose/Exception/MustHaveAtLeastOneValueToEnumerate.pm',
+    'Moose/Exception/MustPassAHashOfOptions.pm',
+    'Moose/Exception/MustPassAMooseMetaRoleInstanceOrSubclass.pm',
+    'Moose/Exception/MustPassAPackageNameOrAnExistingClassMOPPackageInstance.pm',
+    'Moose/Exception/MustPassEvenNumberOfArguments.pm',
+    'Moose/Exception/MustPassEvenNumberOfAttributeOptions.pm',
+    'Moose/Exception/MustProvideANameForTheAttribute.pm',
+    'Moose/Exception/MustSpecifyAtleastOneMethod.pm',
+    'Moose/Exception/MustSpecifyAtleastOneRole.pm',
+    'Moose/Exception/MustSpecifyAtleastOneRoleToApplicant.pm',
+    'Moose/Exception/MustSupplyAClassMOPAttributeInstance.pm',
+    'Moose/Exception/MustSupplyADelegateToMethod.pm',
+    'Moose/Exception/MustSupplyAMetaclass.pm',
+    'Moose/Exception/MustSupplyAMooseMetaAttributeInstance.pm',
+    'Moose/Exception/MustSupplyAnAccessorTypeToConstructWith.pm',
+    'Moose/Exception/MustSupplyAnAttributeToConstructWith.pm',
+    'Moose/Exception/MustSupplyArrayRefAsCurriedArguments.pm',
+    'Moose/Exception/MustSupplyPackageNameAndName.pm',
+    'Moose/Exception/NeedsTypeConstraintUnionForTypeCoercionUnion.pm',
+    'Moose/Exception/NeitherAttributeNorAttributeNameIsGiven.pm',
+    'Moose/Exception/NeitherClassNorClassNameIsGiven.pm',
+    'Moose/Exception/NeitherRoleNorRoleNameIsGiven.pm',
+    'Moose/Exception/NeitherTypeNorTypeNameIsGiven.pm',
+    'Moose/Exception/NoAttributeFoundInSuperClass.pm',
+    'Moose/Exception/NoBodyToInitializeInAnAbstractBaseClass.pm',
+    'Moose/Exception/NoCasesMatched.pm',
+    'Moose/Exception/NoConstraintCheckForTypeConstraint.pm',
+    'Moose/Exception/NoDestructorClassSpecified.pm',
+    'Moose/Exception/NoImmutableTraitSpecifiedForClass.pm',
+    'Moose/Exception/NoParentGivenToSubtype.pm',
+    'Moose/Exception/OnlyInstancesCanBeCloned.pm',
+    'Moose/Exception/OperatorIsRequired.pm',
+    'Moose/Exception/OverrideConflictInComposition.pm',
+    'Moose/Exception/OverrideConflictInSummation.pm',
+    'Moose/Exception/PackageDoesNotUseMooseExporter.pm',
+    'Moose/Exception/PackageNameAndNameParamsNotGivenToWrap.pm',
+    'Moose/Exception/PackagesAndModulesAreNotCachable.pm',
+    'Moose/Exception/ParameterIsNotSubtypeOfParent.pm',
+    'Moose/Exception/ReferencesAreNotAllowedAsDefault.pm',
+    'Moose/Exception/RequiredAttributeLacksInitialization.pm',
+    'Moose/Exception/RequiredAttributeNeedsADefault.pm',
+    'Moose/Exception/RequiredMethodsImportedByClass.pm',
+    'Moose/Exception/RequiredMethodsNotImplementedByClass.pm',
+    'Moose/Exception/Role/Attribute.pm',
+    'Moose/Exception/Role/AttributeName.pm',
+    'Moose/Exception/Role/Class.pm',
+    'Moose/Exception/Role/EitherAttributeOrAttributeName.pm',
+    'Moose/Exception/Role/Instance.pm',
+    'Moose/Exception/Role/InstanceClass.pm',
+    'Moose/Exception/Role/InvalidAttributeOptions.pm',
+    'Moose/Exception/Role/Method.pm',
+    'Moose/Exception/Role/ParamsHash.pm',
+    'Moose/Exception/Role/Role.pm',
+    'Moose/Exception/Role/RoleForCreate.pm',
+    'Moose/Exception/Role/RoleForCreateMOPClass.pm',
+    'Moose/Exception/Role/TypeConstraint.pm',
+    'Moose/Exception/RoleDoesTheExcludedRole.pm',
+    'Moose/Exception/RoleExclusionConflict.pm',
+    'Moose/Exception/RoleNameRequired.pm',
+    'Moose/Exception/RoleNameRequiredForMooseMetaRole.pm',
+    'Moose/Exception/RolesDoNotSupportAugment.pm',
+    'Moose/Exception/RolesDoNotSupportExtends.pm',
+    'Moose/Exception/RolesDoNotSupportInner.pm',
+    'Moose/Exception/RolesDoNotSupportRegexReferencesForMethodModifiers.pm',
+    'Moose/Exception/RolesInCreateTakesAnArrayRef.pm',
+    'Moose/Exception/RolesListMustBeInstancesOfMooseMetaRole.pm',
+    'Moose/Exception/SingleParamsToNewMustBeHashRef.pm',
+    'Moose/Exception/TriggerMustBeACodeRef.pm',
+    'Moose/Exception/TypeConstraintCannotBeUsedForAParameterizableType.pm',
+    'Moose/Exception/TypeConstraintIsAlreadyCreated.pm',
+    'Moose/Exception/TypeParameterMustBeMooseMetaType.pm',
+    'Moose/Exception/UnableToCanonicalizeHandles.pm',
+    'Moose/Exception/UnableToCanonicalizeNonRolePackage.pm',
+    'Moose/Exception/UnableToRecognizeDelegateMetaclass.pm',
+    'Moose/Exception/UndefinedHashKeysPassedToMethod.pm',
+    'Moose/Exception/UnionCalledWithAnArrayRefAndAdditionalArgs.pm',
+    'Moose/Exception/UnionTakesAtleastTwoTypeNames.pm',
+    'Moose/Exception/ValidationFailedForInlineTypeConstraint.pm',
+    'Moose/Exception/ValidationFailedForTypeConstraint.pm',
+    'Moose/Exception/WrapTakesACodeRefToBless.pm',
+    'Moose/Exception/WrongTypeConstraintGiven.pm',
+    'Moose/Exporter.pm',
+    'Moose/Meta/Attribute/Native/Trait.pm',
+    'Moose/Meta/Attribute/Native/Trait/Array.pm',
+    'Moose/Meta/Attribute/Native/Trait/Bool.pm',
+    'Moose/Meta/Attribute/Native/Trait/Code.pm',
+    'Moose/Meta/Attribute/Native/Trait/Counter.pm',
+    'Moose/Meta/Attribute/Native/Trait/Hash.pm',
+    'Moose/Meta/Attribute/Native/Trait/Number.pm',
+    'Moose/Meta/Attribute/Native/Trait/String.pm',
+    'Moose/Meta/Class.pm',
+    'Moose/Meta/Class/Immutable/Trait.pm',
+    'Moose/Meta/Instance.pm',
+    'Moose/Meta/Method.pm',
+    'Moose/Meta/Method/Accessor.pm',
+    'Moose/Meta/Method/Accessor/Native.pm',
+    'Moose/Meta/Method/Accessor/Native/Array.pm',
+    'Moose/Meta/Method/Accessor/Native/Array/Writer.pm',
+    'Moose/Meta/Method/Accessor/Native/Array/accessor.pm',
+    'Moose/Meta/Method/Accessor/Native/Array/clear.pm',
+    'Moose/Meta/Method/Accessor/Native/Array/count.pm',
+    'Moose/Meta/Method/Accessor/Native/Array/delete.pm',
+    'Moose/Meta/Method/Accessor/Native/Array/elements.pm',
+    'Moose/Meta/Method/Accessor/Native/Array/first.pm',
+    'Moose/Meta/Method/Accessor/Native/Array/first_index.pm',
+    'Moose/Meta/Method/Accessor/Native/Array/get.pm',
+    'Moose/Meta/Method/Accessor/Native/Array/grep.pm',
+    'Moose/Meta/Method/Accessor/Native/Array/insert.pm',
+    'Moose/Meta/Method/Accessor/Native/Array/is_empty.pm',
+    'Moose/Meta/Method/Accessor/Native/Array/join.pm',
+    'Moose/Meta/Method/Accessor/Native/Array/map.pm',
+    'Moose/Meta/Method/Accessor/Native/Array/natatime.pm',
+    'Moose/Meta/Method/Accessor/Native/Array/pop.pm',
+    'Moose/Meta/Method/Accessor/Native/Array/push.pm',
+    'Moose/Meta/Method/Accessor/Native/Array/reduce.pm',
+    'Moose/Meta/Method/Accessor/Native/Array/set.pm',
+    'Moose/Meta/Method/Accessor/Native/Array/shallow_clone.pm',
+    'Moose/Meta/Method/Accessor/Native/Array/shift.pm',
+    'Moose/Meta/Method/Accessor/Native/Array/shuffle.pm',
+    'Moose/Meta/Method/Accessor/Native/Array/sort.pm',
+    'Moose/Meta/Method/Accessor/Native/Array/sort_in_place.pm',
+    'Moose/Meta/Method/Accessor/Native/Array/splice.pm',
+    'Moose/Meta/Method/Accessor/Native/Array/uniq.pm',
+    'Moose/Meta/Method/Accessor/Native/Array/unshift.pm',
+    'Moose/Meta/Method/Accessor/Native/Bool/not.pm',
+    'Moose/Meta/Method/Accessor/Native/Bool/set.pm',
+    'Moose/Meta/Method/Accessor/Native/Bool/toggle.pm',
+    'Moose/Meta/Method/Accessor/Native/Bool/unset.pm',
+    'Moose/Meta/Method/Accessor/Native/Code/execute.pm',
+    'Moose/Meta/Method/Accessor/Native/Code/execute_method.pm',
+    'Moose/Meta/Method/Accessor/Native/Collection.pm',
+    'Moose/Meta/Method/Accessor/Native/Counter/Writer.pm',
+    'Moose/Meta/Method/Accessor/Native/Counter/dec.pm',
+    'Moose/Meta/Method/Accessor/Native/Counter/inc.pm',
+    'Moose/Meta/Method/Accessor/Native/Counter/reset.pm',
+    'Moose/Meta/Method/Accessor/Native/Counter/set.pm',
+    'Moose/Meta/Method/Accessor/Native/Hash.pm',
+    'Moose/Meta/Method/Accessor/Native/Hash/Writer.pm',
+    'Moose/Meta/Method/Accessor/Native/Hash/accessor.pm',
+    'Moose/Meta/Method/Accessor/Native/Hash/clear.pm',
+    'Moose/Meta/Method/Accessor/Native/Hash/count.pm',
+    'Moose/Meta/Method/Accessor/Native/Hash/defined.pm',
+    'Moose/Meta/Method/Accessor/Native/Hash/delete.pm',
+    'Moose/Meta/Method/Accessor/Native/Hash/elements.pm',
+    'Moose/Meta/Method/Accessor/Native/Hash/exists.pm',
+    'Moose/Meta/Method/Accessor/Native/Hash/get.pm',
+    'Moose/Meta/Method/Accessor/Native/Hash/is_empty.pm',
+    'Moose/Meta/Method/Accessor/Native/Hash/keys.pm',
+    'Moose/Meta/Method/Accessor/Native/Hash/kv.pm',
+    'Moose/Meta/Method/Accessor/Native/Hash/set.pm',
+    'Moose/Meta/Method/Accessor/Native/Hash/shallow_clone.pm',
+    'Moose/Meta/Method/Accessor/Native/Hash/values.pm',
+    'Moose/Meta/Method/Accessor/Native/Number/abs.pm',
+    'Moose/Meta/Method/Accessor/Native/Number/add.pm',
+    'Moose/Meta/Method/Accessor/Native/Number/div.pm',
+    'Moose/Meta/Method/Accessor/Native/Number/mod.pm',
+    'Moose/Meta/Method/Accessor/Native/Number/mul.pm',
+    'Moose/Meta/Method/Accessor/Native/Number/set.pm',
+    'Moose/Meta/Method/Accessor/Native/Number/sub.pm',
+    'Moose/Meta/Method/Accessor/Native/Reader.pm',
+    'Moose/Meta/Method/Accessor/Native/String/append.pm',
+    'Moose/Meta/Method/Accessor/Native/String/chomp.pm',
+    'Moose/Meta/Method/Accessor/Native/String/chop.pm',
+    'Moose/Meta/Method/Accessor/Native/String/clear.pm',
+    'Moose/Meta/Method/Accessor/Native/String/inc.pm',
+    'Moose/Meta/Method/Accessor/Native/String/length.pm',
+    'Moose/Meta/Method/Accessor/Native/String/match.pm',
+    'Moose/Meta/Method/Accessor/Native/String/prepend.pm',
+    'Moose/Meta/Method/Accessor/Native/String/replace.pm',
+    'Moose/Meta/Method/Accessor/Native/String/substr.pm',
+    'Moose/Meta/Method/Accessor/Native/Writer.pm',
+    'Moose/Meta/Method/Augmented.pm',
+    'Moose/Meta/Method/Constructor.pm',
+    'Moose/Meta/Method/Delegation.pm',
+    'Moose/Meta/Method/Destructor.pm',
+    'Moose/Meta/Method/Meta.pm',
+    'Moose/Meta/Method/Overridden.pm',
+    'Moose/Meta/Object/Trait.pm',
+    'Moose/Meta/Role.pm',
+    'Moose/Meta/Role/Application.pm',
+    'Moose/Meta/Role/Application/RoleSummation.pm',
+    'Moose/Meta/Role/Application/ToClass.pm',
+    'Moose/Meta/Role/Application/ToInstance.pm',
+    'Moose/Meta/Role/Application/ToRole.pm',
+    'Moose/Meta/Role/Composite.pm',
+    'Moose/Meta/Role/Method.pm',
+    'Moose/Meta/Role/Method/Conflicting.pm',
+    'Moose/Meta/Role/Method/Required.pm',
+    'Moose/Meta/TypeCoercion.pm',
+    'Moose/Meta/TypeCoercion/Union.pm',
+    'Moose/Meta/TypeConstraint.pm',
+    'Moose/Meta/TypeConstraint/Registry.pm',
+    'Moose/Object.pm',
+    'Moose/Role.pm',
+    'Moose/Util.pm',
+    'Moose/Util/MetaRole.pm',
+    'Moose/Util/TypeConstraints.pm',
+    'Moose/Util/TypeConstraints/Builtins.pm',
+    'Test/Moose.pm',
+    'metaclass.pm',
+    'oose.pm'
+);
+
+my @scripts = (
+    'bin/moose-outdated'
+);
+
+# no fake home requested
+
+my $inc_switch = -d 'blib' ? '-Mblib' : '-Ilib';
+
+use File::Spec;
+use IPC::Open3;
+use IO::Handle;
+
+open my $stdin, '<', File::Spec->devnull or die "can't open devnull: $!";
+
+my @warnings;
+for my $lib (@module_files)
+{
+    # see L<perlfaq8/How can I capture STDERR from an external command?>
+    my $stderr = IO::Handle->new;
+
+    my $pid = open3($stdin, '>&STDERR', $stderr, $^X, $inc_switch, '-e', "require q[$lib]");
+    binmode $stderr, ':crlf' if $^O eq 'MSWin32';
+    my @_warnings = <$stderr>;
+    waitpid($pid, 0);
+    is($?, 0, "$lib loaded ok");
+
+    if (@_warnings)
+    {
+        warn @_warnings;
+        push @warnings, @_warnings;
+    }
+}
+
+foreach my $file (@scripts)
+{ SKIP: {
+    open my $fh, '<', $file or warn("Unable to open $file: $!"), next;
+    my $line = <$fh>;
+
+    close $fh and skip("$file isn't perl", 1) unless $line =~ /^#!\s*(?:\S*perl\S*)((?:\s+-\w*)*)(?:\s*#.*)?$/;
+    my @flags = $1 ? split(' ', $1) : ();
+
+    my $stderr = IO::Handle->new;
+
+    my $pid = open3($stdin, '>&STDERR', $stderr, $^X, $inc_switch, @flags, '-c', $file);
+    binmode $stderr, ':crlf' if $^O eq 'MSWin32';
+    my @_warnings = <$stderr>;
+    waitpid($pid, 0);
+    is($?, 0, "$file compiled ok");
+
+   # in older perls, -c output is simply the file portion of the path being tested
+    if (@_warnings = grep { !/\bsyntax OK$/ }
+        grep { chomp; $_ ne (File::Spec->splitpath($file))[2] } @_warnings)
+    {
+        warn @_warnings;
+        push @warnings, @_warnings;
+    }
+} }
+
+
+
+is(scalar(@warnings), 0, 'no warnings found') if $ENV{AUTHOR_TESTING};
+
+BAIL_OUT("Compilation problems") if !Test::More->builder->is_passing;
@@ -1,8 +1,6 @@
 #!perl
 # This file was automatically generated by Dist::Zilla::Plugin::MetaTests.
 
-use Test::More;
+use Test::CPAN::Meta;
 
-eval "use Test::CPAN::Meta";
-plan skip_all => "Test::CPAN::Meta required for testing META.yml" if $@;
 meta_yaml_ok();
@@ -1,4 +1,4 @@
 # this test was generated with Dist::Zilla::Plugin::Test::Kwalitee 2.07
 use strict;
 use warnings;
-use Test::Kwalitee;
+use Test::Kwalitee tests => [ qw( -use_strict ) ];
@@ -1,7 +1,7 @@
 use strict;
 use warnings;
 
-# this test was generated with Dist::Zilla::Plugin::Test::NoTabs 0.06
+# this test was generated with Dist::Zilla::Plugin::Test::NoTabs 0.08
 
 use Test::More 0.88;
 use Test::NoTabs;
@@ -249,6 +249,7 @@ my @files = (
     'lib/Moose/Exception/Role/Class.pm',
     'lib/Moose/Exception/Role/EitherAttributeOrAttributeName.pm',
     'lib/Moose/Exception/Role/Instance.pm',
+    'lib/Moose/Exception/Role/InstanceClass.pm',
     'lib/Moose/Exception/Role/InvalidAttributeOptions.pm',
     'lib/Moose/Exception/Role/Method.pm',
     'lib/Moose/Exception/Role/ParamsHash.pm',
@@ -260,7 +261,6 @@ my @files = (
     'lib/Moose/Exception/RoleExclusionConflict.pm',
     'lib/Moose/Exception/RoleNameRequired.pm',
     'lib/Moose/Exception/RoleNameRequiredForMooseMetaRole.pm',
-    'lib/Moose/Exception/RoleNamesDoNotMatch.pm',
     'lib/Moose/Exception/RolesDoNotSupportAugment.pm',
     'lib/Moose/Exception/RolesDoNotSupportExtends.pm',
     'lib/Moose/Exception/RolesDoNotSupportInner.pm',
@@ -271,7 +271,6 @@ my @files = (
     'lib/Moose/Exception/TriggerMustBeACodeRef.pm',
     'lib/Moose/Exception/TypeConstraintCannotBeUsedForAParameterizableType.pm',
     'lib/Moose/Exception/TypeConstraintIsAlreadyCreated.pm',
-    'lib/Moose/Exception/TypeNamesDoNotMatch.pm',
     'lib/Moose/Exception/TypeParameterMustBeMooseMetaType.pm',
     'lib/Moose/Exception/UnableToCanonicalizeHandles.pm',
     'lib/Moose/Exception/UnableToCanonicalizeNonRolePackage.pm',
@@ -435,7 +434,501 @@ my @files = (
     'lib/Moose/Util/TypeConstraints/Builtins.pm',
     'lib/Test/Moose.pm',
     'lib/metaclass.pm',
-    'lib/oose.pm'
+    'lib/oose.pm',
+    't/00-report-prereqs.t',
+    't/000_load.t',
+    't/attributes/accessor_context.t',
+    't/attributes/accessor_inlining.t',
+    't/attributes/accessor_override_method.t',
+    't/attributes/accessor_overwrite_warning.t',
+    't/attributes/attr_dereference_test.t',
+    't/attributes/attribute_accessor_generation.t',
+    't/attributes/attribute_custom_metaclass.t',
+    't/attributes/attribute_delegation.t',
+    't/attributes/attribute_does.t',
+    't/attributes/attribute_inherited_slot_specs.t',
+    't/attributes/attribute_lazy_initializer.t',
+    't/attributes/attribute_names.t',
+    't/attributes/attribute_reader_generation.t',
+    't/attributes/attribute_required.t',
+    't/attributes/attribute_traits.t',
+    't/attributes/attribute_traits_n_meta.t',
+    't/attributes/attribute_traits_parameterized.t',
+    't/attributes/attribute_traits_registered.t',
+    't/attributes/attribute_triggers.t',
+    't/attributes/attribute_type_unions.t',
+    't/attributes/attribute_without_any_methods.t',
+    't/attributes/attribute_writer_generation.t',
+    't/attributes/bad_coerce.t',
+    't/attributes/chained_coercion.t',
+    't/attributes/clone_weak.t',
+    't/attributes/default_class_role_types.t',
+    't/attributes/default_undef.t',
+    't/attributes/delegation_and_modifiers.t',
+    't/attributes/delegation_arg_aliasing.t',
+    't/attributes/delegation_target_not_loaded.t',
+    't/attributes/illegal_options_for_inheritance.t',
+    't/attributes/inherit_lazy_build.t',
+    't/attributes/lazy_no_default.t',
+    't/attributes/method_generation_rules.t',
+    't/attributes/misc_attribute_coerce_lazy.t',
+    't/attributes/misc_attribute_tests.t',
+    't/attributes/more_attr_delegation.t',
+    't/attributes/no_init_arg.t',
+    't/attributes/no_slot_access.t',
+    't/attributes/non_alpha_attr_names.t',
+    't/attributes/numeric_defaults.t',
+    't/attributes/trigger_and_coerce.t',
+    't/basics/always_strict_warnings.t',
+    't/basics/basic_class_setup.t',
+    't/basics/buildargs.t',
+    't/basics/buildargs_warning.t',
+    't/basics/create.t',
+    't/basics/create_anon.t',
+    't/basics/deprecations.t',
+    't/basics/destruction.t',
+    't/basics/error_handling.t',
+    't/basics/global-destruction-helper.pl',
+    't/basics/global_destruction.t',
+    't/basics/import_unimport.t',
+    't/basics/inner_and_augment.t',
+    't/basics/load_into_main.t',
+    't/basics/method_modifier_with_regexp.t',
+    't/basics/methods.t',
+    't/basics/moose_object_does.t',
+    't/basics/moose_respects_type_constraints.t',
+    't/basics/override_and_foreign_classes.t',
+    't/basics/override_augment_inner_super.t',
+    't/basics/rebless.t',
+    't/basics/require_superclasses.t',
+    't/basics/super_and_override.t',
+    't/basics/super_warns_on_args.t',
+    't/basics/universal_methods_wrappable.t',
+    't/basics/wrapped_method_cxt_propagation.t',
+    't/bugs/DEMOLISHALL.t',
+    't/bugs/DEMOLISHALL_shortcutted.t',
+    't/bugs/DEMOLISH_eats_exceptions.t',
+    't/bugs/DEMOLISH_eats_mini.t',
+    't/bugs/DEMOLISH_fails_without_metaclass.t',
+    't/bugs/Moose_Object_error.t',
+    't/bugs/anon_method_metaclass.t',
+    't/bugs/application_metarole_compat.t',
+    't/bugs/apply_role_to_one_instance_only.t',
+    't/bugs/attribute_trait_parameters.t',
+    't/bugs/augment_recursion_bug.t',
+    't/bugs/coerce_without_coercion.t',
+    't/bugs/constructor_object_overload.t',
+    't/bugs/create_anon_recursion.t',
+    't/bugs/create_anon_role_pass.t',
+    't/bugs/delete_sub_stash.t',
+    't/bugs/handles_foreign_class_bug.t',
+    't/bugs/immutable_metaclass_does_role.t',
+    't/bugs/immutable_n_default_x2.t',
+    't/bugs/inheriting_from_roles.t',
+    't/bugs/inline_reader_bug.t',
+    't/bugs/instance_application_role_args.t',
+    't/bugs/lazybuild_required_undef.t',
+    't/bugs/moose_exporter_false_circular_reference_rt_63818.t',
+    't/bugs/moose_octal_defaults.t',
+    't/bugs/native_trait_handles_bad_value.t',
+    't/bugs/reader_precedence_bug.t',
+    't/bugs/role_caller.t',
+    't/bugs/subclass_use_base_bug.t',
+    't/bugs/subtype_conflict_bug.t',
+    't/bugs/subtype_quote_bug.t',
+    't/bugs/super_recursion.t',
+    't/bugs/traits_with_exporter.t',
+    't/bugs/type_constraint_messages.t',
+    't/cmop/ArrayBasedStorage_test.t',
+    't/cmop/AttributesWithHistory_test.t',
+    't/cmop/BinaryTree_test.t',
+    't/cmop/C3MethodDispatchOrder_test.t',
+    't/cmop/ClassEncapsulatedAttributes_test.t',
+    't/cmop/Class_C3_compatibility.t',
+    't/cmop/InsideOutClass_test.t',
+    't/cmop/InstanceCountingClass_test.t',
+    't/cmop/LazyClass_test.t',
+    't/cmop/Perl6Attribute_test.t',
+    't/cmop/RT_27329_fix.t',
+    't/cmop/RT_39001_fix.t',
+    't/cmop/RT_41255.t',
+    't/cmop/add_attribute_alternate.t',
+    't/cmop/add_method_debugmode.t',
+    't/cmop/add_method_modifier.t',
+    't/cmop/advanced_methods.t',
+    't/cmop/anon_class.t',
+    't/cmop/anon_class_create_init.t',
+    't/cmop/anon_class_keep_alive.t',
+    't/cmop/anon_class_leak.t',
+    't/cmop/anon_class_removal.t',
+    't/cmop/anon_packages.t',
+    't/cmop/attribute.t',
+    't/cmop/attribute_duplication.t',
+    't/cmop/attribute_errors_and_edge_cases.t',
+    't/cmop/attribute_get_read_write.t',
+    't/cmop/attribute_initializer.t',
+    't/cmop/attribute_introspection.t',
+    't/cmop/attribute_non_alpha_name.t',
+    't/cmop/attributes.t',
+    't/cmop/basic.t',
+    't/cmop/before_after_dollar_under.t',
+    't/cmop/class_errors_and_edge_cases.t',
+    't/cmop/class_is_pristine.t',
+    't/cmop/class_precedence_list.t',
+    't/cmop/constant_codeinfo.t',
+    't/cmop/create_class.t',
+    't/cmop/custom_instance.t',
+    't/cmop/deprecated.t',
+    't/cmop/get_code_info.t',
+    't/cmop/immutable_custom_trait.t',
+    't/cmop/immutable_metaclass.t',
+    't/cmop/immutable_w_constructors.t',
+    't/cmop/immutable_w_custom_metaclass.t',
+    't/cmop/inline_and_dollar_at.t',
+    't/cmop/inline_structor.t',
+    't/cmop/insertion_order.t',
+    't/cmop/instance.t',
+    't/cmop/instance_inline.t',
+    't/cmop/instance_metaclass_incompat.t',
+    't/cmop/instance_metaclass_incompat_dyn.t',
+    't/cmop/lib/ArrayBasedStorage.pm',
+    't/cmop/lib/AttributesWithHistory.pm',
+    't/cmop/lib/BinaryTree.pm',
+    't/cmop/lib/C3MethodDispatchOrder.pm',
+    't/cmop/lib/ClassEncapsulatedAttributes.pm',
+    't/cmop/lib/InsideOutClass.pm',
+    't/cmop/lib/InstanceCountingClass.pm',
+    't/cmop/lib/LazyClass.pm',
+    't/cmop/lib/MyMetaClass.pm',
+    't/cmop/lib/MyMetaClass/Attribute.pm',
+    't/cmop/lib/MyMetaClass/Instance.pm',
+    't/cmop/lib/MyMetaClass/Method.pm',
+    't/cmop/lib/MyMetaClass/Random.pm',
+    't/cmop/lib/Perl6Attribute.pm',
+    't/cmop/lib/SyntaxError.pm',
+    't/cmop/load.t',
+    't/cmop/magic.t',
+    't/cmop/make_mutable.t',
+    't/cmop/meta_method.t',
+    't/cmop/meta_package.t',
+    't/cmop/meta_package_extension.t',
+    't/cmop/metaclass.t',
+    't/cmop/metaclass_incompatibility.t',
+    't/cmop/metaclass_incompatibility_dyn.t',
+    't/cmop/metaclass_inheritance.t',
+    't/cmop/metaclass_loads_classes.t',
+    't/cmop/metaclass_reinitialize.t',
+    't/cmop/method.t',
+    't/cmop/method_modifiers.t',
+    't/cmop/methods.t',
+    't/cmop/modify_parent_method.t',
+    't/cmop/new_and_clone_metaclasses.t',
+    't/cmop/null_stash.t',
+    't/cmop/numeric_defaults.t',
+    't/cmop/package_variables.t',
+    't/cmop/random_eval_bug.t',
+    't/cmop/rebless_instance.t',
+    't/cmop/rebless_instance_away.t',
+    't/cmop/rebless_overload.t',
+    't/cmop/rebless_with_extra_params.t',
+    't/cmop/scala_style_mixin_composition.t',
+    't/cmop/self_introspection.t',
+    't/cmop/subclasses.t',
+    't/cmop/subname.t',
+    't/cmop/universal_methods.t',
+    't/compat/composite_metaroles.t',
+    't/compat/extends_nonmoose_that_isa_moose_with_metarole.t',
+    't/compat/foreign_inheritence.t',
+    't/compat/inc_hash.t',
+    't/compat/module_refresh_compat.t',
+    't/compat/moose_respects_base.t',
+    't/examples/Child_Parent_attr_inherit.t',
+    't/examples/example1.t',
+    't/examples/example2.t',
+    't/examples/example_Moose_POOP.t',
+    't/examples/example_Protomoose.t',
+    't/examples/example_w_DCS.t',
+    't/examples/example_w_TestDeep.t',
+    't/examples/record_set_iterator.t',
+    't/exceptions/attribute.t',
+    't/exceptions/class-mop-attribute.t',
+    't/exceptions/class-mop-class-immutable-trait.t',
+    't/exceptions/class-mop-class.t',
+    't/exceptions/class-mop-method-accessor.t',
+    't/exceptions/class-mop-method-constructor.t',
+    't/exceptions/class-mop-method-generated.t',
+    't/exceptions/class-mop-method-meta.t',
+    't/exceptions/class-mop-method-overload.t',
+    't/exceptions/class-mop-method-wrapped.t',
+    't/exceptions/class-mop-method.t',
+    't/exceptions/class-mop-mixin-hasattributes.t',
+    't/exceptions/class-mop-mixin-hasmethods.t',
+    't/exceptions/class-mop-module.t',
+    't/exceptions/class-mop-object.t',
+    't/exceptions/class-mop-package.t',
+    't/exceptions/class.t',
+    't/exceptions/cmop.t',
+    't/exceptions/exception-lazyattributeneedsadefault.t',
+    't/exceptions/meta-role.t',
+    't/exceptions/metaclass.t',
+    't/exceptions/moose-exporter.t',
+    't/exceptions/moose-meta-attribute-native-traits.t',
+    't/exceptions/moose-meta-class-immutable-trait.t',
+    't/exceptions/moose-meta-method-accessor-native-array.t',
+    't/exceptions/moose-meta-method-accessor-native-collection.t',
+    't/exceptions/moose-meta-method-accessor-native-grep.t',
+    't/exceptions/moose-meta-method-accessor-native-hash-set.t',
+    't/exceptions/moose-meta-method-accessor-native-hash.t',
+    't/exceptions/moose-meta-method-accessor-native-string-match.t',
+    't/exceptions/moose-meta-method-accessor-native-string-replace.t',
+    't/exceptions/moose-meta-method-accessor-native-string-substr.t',
+    't/exceptions/moose-meta-method-accessor-native.t',
+    't/exceptions/moose-meta-method-accessor.t',
+    't/exceptions/moose-meta-method-augmented.t',
+    't/exceptions/moose-meta-method-constructor.t',
+    't/exceptions/moose-meta-method-delegation.t',
+    't/exceptions/moose-meta-method-destructor.t',
+    't/exceptions/moose-meta-method-overridden.t',
+    't/exceptions/moose-meta-role-application-rolesummation.t',
+    't/exceptions/moose-meta-role-application-toclass.t',
+    't/exceptions/moose-meta-role-application-torole.t',
+    't/exceptions/moose-meta-role-application.t',
+    't/exceptions/moose-meta-role-attribute.t',
+    't/exceptions/moose-meta-role-composite.t',
+    't/exceptions/moose-meta-typecoercion-union.t',
+    't/exceptions/moose-meta-typecoercion.t',
+    't/exceptions/moose-meta-typeconstraint-enum.t',
+    't/exceptions/moose-meta-typeconstraint-parameterizable.t',
+    't/exceptions/moose-meta-typeconstraint-parameterized.t',
+    't/exceptions/moose-meta-typeconstraint-registry.t',
+    't/exceptions/moose-meta-typeconstraint.t',
+    't/exceptions/moose-role.t',
+    't/exceptions/moose-util-metarole.t',
+    't/exceptions/moose-util-typeconstraints.t',
+    't/exceptions/moose.t',
+    't/exceptions/object.t',
+    't/exceptions/overload.t',
+    't/exceptions/rt-92818.t',
+    't/exceptions/rt-94795.t',
+    't/exceptions/traits.t',
+    't/exceptions/typeconstraints.t',
+    't/exceptions/util.t',
+    't/immutable/apply_roles_to_immutable.t',
+    't/immutable/buildargs.t',
+    't/immutable/constructor_is_not_moose.t',
+    't/immutable/constructor_is_wrapped.t',
+    't/immutable/default_values.t',
+    't/immutable/definition_context.t',
+    't/immutable/immutable_constructor_error.t',
+    't/immutable/immutable_destroy.t',
+    't/immutable/immutable_meta_class.t',
+    't/immutable/immutable_metaclass_with_traits.t',
+    't/immutable/immutable_moose.t',
+    't/immutable/immutable_roundtrip.t',
+    't/immutable/immutable_trigger_from_constructor.t',
+    't/immutable/inline_close_over.t',
+    't/immutable/inline_fallbacks.t',
+    't/immutable/inlined_constructors_n_types.t',
+    't/immutable/multiple_demolish_inline.t',
+    't/lib/Bar.pm',
+    't/lib/Bar7/Meta/Trait.pm',
+    't/lib/Bar7/Meta/Trait2.pm',
+    't/lib/Foo.pm',
+    't/lib/Moose/Meta/Attribute/Custom/Bar.pm',
+    't/lib/Moose/Meta/Attribute/Custom/Foo.pm',
+    't/lib/Moose/Meta/Attribute/Custom/Trait/Bar.pm',
+    't/lib/Moose/Meta/Attribute/Custom/Trait/Foo.pm',
+    't/lib/MyExporter.pm',
+    't/lib/MyMetaclassRole.pm',
+    't/lib/MyMooseA.pm',
+    't/lib/MyMooseB.pm',
+    't/lib/MyMooseObject.pm',
+    't/lib/NoInlineAttribute.pm',
+    't/lib/Real/Package.pm',
+    't/lib/Role/BreakOnLoad.pm',
+    't/lib/Role/Child.pm',
+    't/lib/Role/Interface.pm',
+    't/lib/Role/Parent.pm',
+    't/metaclasses/create_anon_with_required_attr.t',
+    't/metaclasses/custom_attr_meta_as_role.t',
+    't/metaclasses/custom_attr_meta_with_roles.t',
+    't/metaclasses/easy_init_meta.t',
+    't/metaclasses/export_with_prototype.t',
+    't/metaclasses/exporter_also_with_trait.t',
+    't/metaclasses/exporter_meta_lookup.t',
+    't/metaclasses/goto_moose_import.t',
+    't/metaclasses/immutable_metaclass_compat_bug.t',
+    't/metaclasses/meta_name.t',
+    't/metaclasses/metaclass_compat.t',
+    't/metaclasses/metaclass_compat_no_fixing_bug.t',
+    't/metaclasses/metaclass_compat_role_conflicts.t',
+    't/metaclasses/metaclass_parameterized_traits.t',
+    't/metaclasses/metaclass_traits.t',
+    't/metaclasses/metarole.t',
+    't/metaclasses/metarole_combination.t',
+    't/metaclasses/metarole_on_anon.t',
+    't/metaclasses/metarole_w_metaclass_pm.t',
+    't/metaclasses/metaroles_of_metaroles.t',
+    't/metaclasses/moose_exporter.t',
+    't/metaclasses/moose_exporter_trait_aliases.t',
+    't/metaclasses/moose_for_meta.t',
+    't/metaclasses/moose_nonmoose_metatrait_init_order.t',
+    't/metaclasses/moose_nonmoose_moose_chain_init_meta.t',
+    't/metaclasses/moose_w_metaclass.t',
+    't/metaclasses/new_metaclass.t',
+    't/metaclasses/new_object_BUILD.t',
+    't/metaclasses/overloading.t',
+    't/metaclasses/reinitialize.t',
+    't/metaclasses/use_base_of_moose.t',
+    't/moose_util/apply_roles.t',
+    't/moose_util/create_alias.t',
+    't/moose_util/ensure_all_roles.t',
+    't/moose_util/method_mod_args.t',
+    't/moose_util/moose_util.t',
+    't/moose_util/moose_util_does_role.t',
+    't/moose_util/moose_util_search_class_by_role.t',
+    't/moose_util/resolve_alias.t',
+    't/moose_util/with_traits.t',
+    't/native_traits/array_coerce.t',
+    't/native_traits/array_from_role.t',
+    't/native_traits/array_subtypes.t',
+    't/native_traits/array_trigger.t',
+    't/native_traits/collection_with_roles.t',
+    't/native_traits/custom_instance.t',
+    't/native_traits/hash_coerce.t',
+    't/native_traits/hash_subtypes.t',
+    't/native_traits/hash_trigger.t',
+    't/native_traits/remove_attribute.t',
+    't/native_traits/shallow_clone.t',
+    't/native_traits/trait_array.t',
+    't/native_traits/trait_bool.t',
+    't/native_traits/trait_code.t',
+    't/native_traits/trait_counter.t',
+    't/native_traits/trait_hash.t',
+    't/native_traits/trait_number.t',
+    't/native_traits/trait_string.t',
+    't/recipes/basics_bankaccount_methodmodifiersandsubclassing.t',
+    't/recipes/basics_binarytree_attributefeatures.t',
+    't/recipes/basics_company_subtypes.t',
+    't/recipes/basics_datetime_extendingnonmooseparent.t',
+    't/recipes/basics_document_augmentandinner.t',
+    't/recipes/basics_http_subtypesandcoercion.t',
+    't/recipes/basics_point_attributesandsubclassing.t',
+    't/recipes/extending_debugging_baseclassrole.t',
+    't/recipes/extending_mooseish_moosesugar.t',
+    't/recipes/legacy_debugging_baseclassreplacement.t',
+    't/recipes/legacy_labeled_attributemetaclass.t',
+    't/recipes/meta_globref_instancemetaclass.t',
+    't/recipes/meta_labeled_attributetrait.t',
+    't/recipes/meta_privateorpublic_methodmetaclass.t',
+    't/recipes/meta_table_metaclasstrait.t',
+    't/recipes/roles_applicationtoinstance.t',
+    't/recipes/roles_comparable_codereuse.t',
+    't/recipes/roles_restartable_advancedcomposition.t',
+    't/roles/anonymous_roles.t',
+    't/roles/application_toclass.t',
+    't/roles/apply_role.t',
+    't/roles/build.t',
+    't/roles/compose_overloading.t',
+    't/roles/conflict_many_methods.t',
+    't/roles/create_role.t',
+    't/roles/create_role_subclass.t',
+    't/roles/empty_method_modifiers_meta_bug.t',
+    't/roles/extending_role_attrs.t',
+    't/roles/free_anonymous_roles.t',
+    't/roles/imported_required_method.t',
+    't/roles/meta_role.t',
+    't/roles/method_aliasing_in_composition.t',
+    't/roles/method_exclusion_in_composition.t',
+    't/roles/method_modifiers.t',
+    't/roles/methods.t',
+    't/roles/more_alias_and_exclude.t',
+    't/roles/more_role_edge_cases.t',
+    't/roles/new_meta_role.t',
+    't/roles/overriding.t',
+    't/roles/reinitialize_anon_role.t',
+    't/roles/role.t',
+    't/roles/role_attr_application.t',
+    't/roles/role_attribute_conflict.t',
+    't/roles/role_attrs.t',
+    't/roles/role_compose_requires.t',
+    't/roles/role_composite.t',
+    't/roles/role_composite_exclusion.t',
+    't/roles/role_composition_attributes.t',
+    't/roles/role_composition_conflict_detection.t',
+    't/roles/role_composition_errors.t',
+    't/roles/role_composition_method_mods.t',
+    't/roles/role_composition_methods.t',
+    't/roles/role_composition_override.t',
+    't/roles/role_composition_req_methods.t',
+    't/roles/role_conflict_detection.t',
+    't/roles/role_conflict_edge_cases.t',
+    't/roles/role_consumers.t',
+    't/roles/role_exclusion.t',
+    't/roles/role_exclusion_and_alias_bug.t',
+    't/roles/role_for_combination.t',
+    't/roles/roles_and_method_cloning.t',
+    't/roles/roles_and_req_method_edge_cases.t',
+    't/roles/roles_applied_in_create.t',
+    't/roles/run_time_role_composition.t',
+    't/roles/runtime_roles_and_attrs.t',
+    't/roles/runtime_roles_and_nonmoose.t',
+    't/roles/runtime_roles_w_params.t',
+    't/roles/use_base_does.t',
+    't/test_moose/test_moose.t',
+    't/test_moose/test_moose_does_ok.t',
+    't/test_moose/test_moose_has_attribute_ok.t',
+    't/test_moose/test_moose_meta_ok.t',
+    't/test_moose/with_immutable.t',
+    't/todo_tests/exception_reflects_failed_constraint.t',
+    't/todo_tests/immutable_n_around.t',
+    't/todo_tests/moose_and_threads.t',
+    't/todo_tests/replacing_super_methods.t',
+    't/todo_tests/required_role_accessors.t',
+    't/todo_tests/role_attr_methods_original_package.t',
+    't/todo_tests/role_insertion_order.t',
+    't/todo_tests/various_role_features.t',
+    't/todo_tests/wrong-inner.t',
+    't/type_constraints/advanced_type_creation.t',
+    't/type_constraints/class_subtypes.t',
+    't/type_constraints/class_type_constraint.t',
+    't/type_constraints/coerced_parameterized_types.t',
+    't/type_constraints/container_type_coercion.t',
+    't/type_constraints/container_type_constraint.t',
+    't/type_constraints/custom_parameterized_types.t',
+    't/type_constraints/custom_type_errors.t',
+    't/type_constraints/define_type_twice_throws.t',
+    't/type_constraints/duck_type_handles.t',
+    't/type_constraints/duck_types.t',
+    't/type_constraints/enum.t',
+    't/type_constraints/inlining.t',
+    't/type_constraints/match_type_operator.t',
+    't/type_constraints/maybe_type_constraint.t',
+    't/type_constraints/misc_type_tests.t',
+    't/type_constraints/name_conflicts.t',
+    't/type_constraints/normalize_type_name.t',
+    't/type_constraints/parameterize_from.t',
+    't/type_constraints/role_type_constraint.t',
+    't/type_constraints/subtype_auto_vivify_parent.t',
+    't/type_constraints/subtyping_parameterized_types.t',
+    't/type_constraints/subtyping_union_types.t',
+    't/type_constraints/throw_error.t',
+    't/type_constraints/type_coersion_on_lazy_attributes.t',
+    't/type_constraints/type_names.t',
+    't/type_constraints/type_notation_parser.t',
+    't/type_constraints/types_and_undef.t',
+    't/type_constraints/union_is_a_type_of.t',
+    't/type_constraints/union_types.t',
+    't/type_constraints/union_types_and_coercions.t',
+    't/type_constraints/util_find_type_constraint.t',
+    't/type_constraints/util_more_type_coercion.t',
+    't/type_constraints/util_std_type_constraints.t',
+    't/type_constraints/util_type_coercion.t',
+    't/type_constraints/util_type_constraints.t',
+    't/type_constraints/util_type_constraints_export.t',
+    't/type_constraints/util_type_reloading.t',
+    't/type_constraints/with-specio.t',
+    't/zzz-check-breaks.t'
 );
 
 notabs_ok($_) foreach @files;
@@ -165,8 +165,14 @@ my %trustme = (
             )
     ],
     'Moose::Meta::Mixin::AttributeCore' => ['.+'],
-    'Moose::Meta::Role::Composite' =>
-        [ 'get_method', 'get_method_list', 'has_method', 'add_method' ],
+    'Moose::Meta::Role::Composite' => [
+        qw( add_method
+            get_method
+            get_method_list
+            has_method
+            is_anon
+            ),
+    ],
     'Moose::Object' => ['BUILDALL', 'DEMOLISHALL'],
     'Moose::Role' => [
         qw( after
@@ -1,8 +1,6 @@
 #!perl
 # This file was automatically generated by Dist::Zilla::Plugin::PodSyntaxTests.
 use Test::More;
-
-eval "use Test::Pod 1.41";
-plan skip_all => "Test::Pod 1.41 required for testing POD" if $@;
+use Test::Pod 1.41;
 
 all_pod_files_ok();