The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Changes 3119
LICENSE 11
MANIFEST 1618
META.json 581727
META.yml 519631
Makefile.PL 1824
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
bin/moose-outdated 02
dist.ini 3384
inc/CheckReleaseType.pm 037
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/SimpleAuthority.pm 013
inc/SimpleProvides.pm 034
lib/Class/MOP/Attribute.pm 1711
lib/Class/MOP/Class/Immutable/Trait.pm 1013
lib/Class/MOP/Class.pm 4442
lib/Class/MOP/Deprecated.pm 52
lib/Class/MOP/Instance.pm 62
lib/Class/MOP/Method/Accessor.pm 2317
lib/Class/MOP/Method/Constructor.pm 105
lib/Class/MOP/Method/Generated.pm 104
lib/Class/MOP/Method/Inlined.pm 52
lib/Class/MOP/Method/Meta.pm 83
lib/Class/MOP/Method/Overload.pm 83
lib/Class/MOP/Method/Wrapped.pm 93
lib/Class/MOP/Method.pm 105
lib/Class/MOP/MiniTrait.pm 53
lib/Class/MOP/Mixin/AttributeCore.pm 52
lib/Class/MOP/Mixin/HasAttributes.pm 127
lib/Class/MOP/Mixin/HasMethods.pm 117
lib/Class/MOP/Mixin.pm 815
lib/Class/MOP/Module.pm 95
lib/Class/MOP/Object.pm 199
lib/Class/MOP/Package.pm 104
lib/Class/MOP.pm 72
lib/Moose/Conflicts.pm 7030
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 52
lib/Moose/Exception/AccessorMustReadWrite.pm 41
lib/Moose/Exception/AddParameterizableTypeTakesParameterizableType.pm 41
lib/Moose/Exception/AddRoleTakesAMooseMetaRoleInstance.pm 41
lib/Moose/Exception/AddRoleToARoleTakesAMooseMetaRole.pm 41
lib/Moose/Exception/ApplyTakesABlessedInstance.pm 41
lib/Moose/Exception/AttachToClassNeedsAClassMOPClassInstanceOrASubclass.pm 41
lib/Moose/Exception/AttributeConflictInRoles.pm 1110
lib/Moose/Exception/AttributeConflictInSummation.pm 85
lib/Moose/Exception/AttributeExtensionIsNotSupportedInRoles.pm 41
lib/Moose/Exception/AttributeIsRequired.pm 847
lib/Moose/Exception/AttributeMustBeAnClassMOPMixinAttributeCoreOrSubclass.pm 41
lib/Moose/Exception/AttributeNamesDoNotMatch.pm 41
lib/Moose/Exception/AttributeValueIsNotAnObject.pm 41
lib/Moose/Exception/AttributeValueIsNotDefined.pm 41
lib/Moose/Exception/AutoDeRefNeedsArrayRefOrHashRef.pm 41
lib/Moose/Exception/BadOptionFormat.pm 41
lib/Moose/Exception/BothBuilderAndDefaultAreNotAllowed.pm 41
lib/Moose/Exception/BuilderDoesNotExist.pm 41
lib/Moose/Exception/BuilderMethodNotSupportedForAttribute.pm 41
lib/Moose/Exception/BuilderMethodNotSupportedForInlineAttribute.pm 41
lib/Moose/Exception/BuilderMustBeAMethodName.pm 41
lib/Moose/Exception/CallingMethodOnAnImmutableInstance.pm 41
lib/Moose/Exception/CallingReadOnlyMethodOnAnImmutableInstance.pm 41
lib/Moose/Exception/CanExtendOnlyClasses.pm 125
lib/Moose/Exception/CanOnlyConsumeRole.pm 41
lib/Moose/Exception/CanOnlyWrapBlessedCode.pm 41
lib/Moose/Exception/CanReblessOnlyIntoASubclass.pm 75
lib/Moose/Exception/CanReblessOnlyIntoASuperclass.pm 63
lib/Moose/Exception/CannotAddAdditionalTypeCoercionsToUnion.pm 41
lib/Moose/Exception/CannotAddAsAnAttributeToARole.pm 41
lib/Moose/Exception/CannotApplyBaseClassRolesToRole.pm 41
lib/Moose/Exception/CannotAssignValueToReadOnlyAccessor.pm 41
lib/Moose/Exception/CannotAugmentIfLocalMethodPresent.pm 41
lib/Moose/Exception/CannotAugmentNoSuperMethod.pm 41
lib/Moose/Exception/CannotAutoDerefWithoutIsa.pm 41
lib/Moose/Exception/CannotAutoDereferenceTypeConstraint.pm 41
lib/Moose/Exception/CannotCalculateNativeType.pm 41
lib/Moose/Exception/CannotCallAnAbstractBaseMethod.pm 41
lib/Moose/Exception/CannotCallAnAbstractMethod.pm 41
lib/Moose/Exception/CannotCoerceAWeakRef.pm 41
lib/Moose/Exception/CannotCoerceAttributeWhichHasNoCoercion.pm 41
lib/Moose/Exception/CannotCreateHigherOrderTypeWithoutATypeParameter.pm 41
lib/Moose/Exception/CannotCreateMethodAliasLocalMethodIsPresent.pm 63
lib/Moose/Exception/CannotCreateMethodAliasLocalMethodIsPresentInClass.pm 41
lib/Moose/Exception/CannotDelegateLocalMethodIsPresent.pm 41
lib/Moose/Exception/CannotDelegateWithoutIsa.pm 41
lib/Moose/Exception/CannotFindDelegateMetaclass.pm 41
lib/Moose/Exception/CannotFindType.pm 41
lib/Moose/Exception/CannotFindTypeGivenToMatchOnType.pm 41
lib/Moose/Exception/CannotFixMetaclassCompatibility.pm 41
lib/Moose/Exception/CannotGenerateInlineConstraint.pm 98
lib/Moose/Exception/CannotInitializeMooseMetaRoleComposite.pm 41
lib/Moose/Exception/CannotInlineTypeConstraintCheck.pm 41
lib/Moose/Exception/CannotLocatePackageInINC.pm 58
lib/Moose/Exception/CannotMakeMetaclassCompatible.pm 41
lib/Moose/Exception/CannotOverrideALocalMethod.pm 41
lib/Moose/Exception/CannotOverrideBodyOfMetaMethods.pm 41
lib/Moose/Exception/CannotOverrideLocalMethodIsPresent.pm 41
lib/Moose/Exception/CannotOverrideNoSuperMethod.pm 41
lib/Moose/Exception/CannotRegisterUnnamedTypeConstraint.pm 51
lib/Moose/Exception/CannotUseLazyBuildAndDefaultSimultaneously.pm 41
lib/Moose/Exception/CircularReferenceInAlso.pm 41
lib/Moose/Exception/ClassDoesNotHaveInitMeta.pm 41
lib/Moose/Exception/ClassDoesTheExcludedRole.pm 87
lib/Moose/Exception/ClassNamesDoNotMatch.pm 41
lib/Moose/Exception/CloneObjectExpectsAnInstanceOfMetaclass.pm 52
lib/Moose/Exception/CodeBlockMustBeACodeRef.pm 41
lib/Moose/Exception/CoercingWithoutCoercions.pm 102
lib/Moose/Exception/CoercionAlreadyExists.pm 41
lib/Moose/Exception/CoercionNeedsTypeConstraint.pm 41
lib/Moose/Exception/ConflictDetectedInCheckRoleExclusions.pm 87
lib/Moose/Exception/ConflictDetectedInCheckRoleExclusionsInToClass.pm 65
lib/Moose/Exception/ConstructClassInstanceTakesPackageName.pm 41
lib/Moose/Exception/CouldNotCreateMethod.pm 41
lib/Moose/Exception/CouldNotCreateWriter.pm 41
lib/Moose/Exception/CouldNotEvalConstructor.pm 41
lib/Moose/Exception/CouldNotEvalDestructor.pm 41
lib/Moose/Exception/CouldNotFindTypeConstraintToCoerceFrom.pm 41
lib/Moose/Exception/CouldNotGenerateInlineAttributeMethod.pm 41
lib/Moose/Exception/CouldNotLocateTypeConstraintForUnion.pm 41
lib/Moose/Exception/CouldNotParseType.pm 41
lib/Moose/Exception/CreateMOPClassTakesArrayRefOfAttributes.pm 41
lib/Moose/Exception/CreateMOPClassTakesArrayRefOfSuperclasses.pm 41
lib/Moose/Exception/CreateMOPClassTakesHashRefOfMethods.pm 41
lib/Moose/Exception/CreateTakesArrayRefOfRoles.pm 51
lib/Moose/Exception/CreateTakesHashRefOfAttributes.pm 41
lib/Moose/Exception/CreateTakesHashRefOfMethods.pm 41
lib/Moose/Exception/DefaultToMatchOnTypeMustBeCodeRef.pm 41
lib/Moose/Exception/DelegationToAClassWhichIsNotLoaded.pm 41
lib/Moose/Exception/DelegationToARoleWhichIsNotLoaded.pm 41
lib/Moose/Exception/DelegationToATypeWhichIsNotAClass.pm 41
lib/Moose/Exception/DoesRequiresRoleName.pm 102
lib/Moose/Exception/EnumCalledWithAnArrayRefAndAdditionalArgs.pm 41
lib/Moose/Exception/EnumValuesMustBeString.pm 41
lib/Moose/Exception/ExtendsMissingArgs.pm 41
lib/Moose/Exception/HandlesMustBeAHashRef.pm 41
lib/Moose/Exception/IllegalInheritedOptions.pm 41
lib/Moose/Exception/IllegalMethodTypeToAddMethodModifier.pm 41
lib/Moose/Exception/IncompatibleMetaclassOfSuperclass.pm 128
lib/Moose/Exception/InitMetaRequiresClass.pm 41
lib/Moose/Exception/InitializeTakesUnBlessedPackageName.pm 41
lib/Moose/Exception/InstanceBlessedIntoWrongClass.pm 52
lib/Moose/Exception/InstanceMustBeABlessedReference.pm 41
lib/Moose/Exception/InvalidArgPassedToMooseUtilMetaRole.pm 41
lib/Moose/Exception/InvalidArgumentToMethod.pm 41
lib/Moose/Exception/InvalidArgumentsToTraitAliases.pm 41
lib/Moose/Exception/InvalidBaseTypeGivenToCreateParameterizedTypeConstraint.pm 41
lib/Moose/Exception/InvalidHandleValue.pm 41
lib/Moose/Exception/InvalidHasProvidedInARole.pm 41
lib/Moose/Exception/InvalidNameForType.pm 41
lib/Moose/Exception/InvalidRoleApplication.pm 41
lib/Moose/Exception/InvalidTypeConstraint.pm 41
lib/Moose/Exception/InvalidTypeGivenToCreateParameterizedTypeConstraint.pm 41
lib/Moose/Exception/InvalidValueForIs.pm 41
lib/Moose/Exception/IsaDoesNotDoTheRole.pm 41
lib/Moose/Exception/IsaLacksDoesMethod.pm 41
lib/Moose/Exception/LazyAttributeNeedsADefault.pm 41
lib/Moose/Exception/Legacy.pm 41
lib/Moose/Exception/MOPAttributeNewNeedsAttributeName.pm 41
lib/Moose/Exception/MatchActionMustBeACodeRef.pm 113
lib/Moose/Exception/MessageParameterMustBeCodeRef.pm 41
lib/Moose/Exception/MetaclassIsAClassNotASubclassOfGivenMetaclass.pm 66
lib/Moose/Exception/MetaclassIsARoleNotASubclassOfGivenMetaclass.pm 68
lib/Moose/Exception/MetaclassIsNotASubclassOfGivenMetaclass.pm 55
lib/Moose/Exception/MetaclassMustBeASubclassOfMooseMetaClass.pm 41
lib/Moose/Exception/MetaclassMustBeASubclassOfMooseMetaRole.pm 41
lib/Moose/Exception/MetaclassMustBeDerivedFromClassMOPClass.pm 41
lib/Moose/Exception/MetaclassNotLoaded.pm 41
lib/Moose/Exception/MetaclassTypeIncompatible.pm 56
lib/Moose/Exception/MethodExpectedAMetaclassObject.pm 41
lib/Moose/Exception/MethodExpectsFewerArgs.pm 41
lib/Moose/Exception/MethodExpectsMoreArgs.pm 41
lib/Moose/Exception/MethodModifierNeedsMethodName.pm 41
lib/Moose/Exception/MethodNameConflictInRoles.pm 41
lib/Moose/Exception/MethodNameNotFoundInInheritanceHierarchy.pm 52
lib/Moose/Exception/MethodNameNotGiven.pm 41
lib/Moose/Exception/MustDefineAMethodName.pm 41
lib/Moose/Exception/MustDefineAnAttributeName.pm 41
lib/Moose/Exception/MustHaveAtLeastOneValueToEnumerate.pm 41
lib/Moose/Exception/MustPassAHashOfOptions.pm 41
lib/Moose/Exception/MustPassAMooseMetaRoleInstanceOrSubclass.pm 41
lib/Moose/Exception/MustPassAPackageNameOrAnExistingClassMOPPackageInstance.pm 41
lib/Moose/Exception/MustPassEvenNumberOfArguments.pm 41
lib/Moose/Exception/MustPassEvenNumberOfAttributeOptions.pm 41
lib/Moose/Exception/MustProvideANameForTheAttribute.pm 41
lib/Moose/Exception/MustSpecifyAtleastOneMethod.pm 41
lib/Moose/Exception/MustSpecifyAtleastOneRole.pm 41
lib/Moose/Exception/MustSpecifyAtleastOneRoleToApplicant.pm 41
lib/Moose/Exception/MustSupplyAClassMOPAttributeInstance.pm 41
lib/Moose/Exception/MustSupplyADelegateToMethod.pm 41
lib/Moose/Exception/MustSupplyAMetaclass.pm 41
lib/Moose/Exception/MustSupplyAMooseMetaAttributeInstance.pm 41
lib/Moose/Exception/MustSupplyAnAccessorTypeToConstructWith.pm 41
lib/Moose/Exception/MustSupplyAnAttributeToConstructWith.pm 41
lib/Moose/Exception/MustSupplyArrayRefAsCurriedArguments.pm 41
lib/Moose/Exception/MustSupplyPackageNameAndName.pm 41
lib/Moose/Exception/NeedsTypeConstraintUnionForTypeCoercionUnion.pm 54
lib/Moose/Exception/NeitherAttributeNorAttributeNameIsGiven.pm 41
lib/Moose/Exception/NeitherClassNorClassNameIsGiven.pm 41
lib/Moose/Exception/NeitherRoleNorRoleNameIsGiven.pm 41
lib/Moose/Exception/NeitherTypeNorTypeNameIsGiven.pm 41
lib/Moose/Exception/NoAttributeFoundInSuperClass.pm 52
lib/Moose/Exception/NoBodyToInitializeInAnAbstractBaseClass.pm 41
lib/Moose/Exception/NoCasesMatched.pm 41
lib/Moose/Exception/NoConstraintCheckForTypeConstraint.pm 41
lib/Moose/Exception/NoDestructorClassSpecified.pm 41
lib/Moose/Exception/NoImmutableTraitSpecifiedForClass.pm 66
lib/Moose/Exception/NoParentGivenToSubtype.pm 41
lib/Moose/Exception/OnlyInstancesCanBeCloned.pm 41
lib/Moose/Exception/OperatorIsRequired.pm 41
lib/Moose/Exception/OverrideConflictInComposition.pm 85
lib/Moose/Exception/OverrideConflictInSummation.pm 1213
lib/Moose/Exception/PackageDoesNotUseMooseExporter.pm 41
lib/Moose/Exception/PackageNameAndNameParamsNotGivenToWrap.pm 41
lib/Moose/Exception/PackagesAndModulesAreNotCachable.pm 41
lib/Moose/Exception/ParameterIsNotSubtypeOfParent.pm 55
lib/Moose/Exception/ReferencesAreNotAllowedAsDefault.pm 41
lib/Moose/Exception/RequiredAttributeLacksInitialization.pm 41
lib/Moose/Exception/RequiredAttributeNeedsADefault.pm 41
lib/Moose/Exception/RequiredMethodsImportedByClass.pm 52
lib/Moose/Exception/RequiredMethodsNotImplementedByClass.pm 41
lib/Moose/Exception/Role/Attribute.pm 41
lib/Moose/Exception/Role/AttributeName.pm 41
lib/Moose/Exception/Role/Class.pm 506
lib/Moose/Exception/Role/EitherAttributeOrAttributeName.pm 41
lib/Moose/Exception/Role/Instance.pm 41
lib/Moose/Exception/Role/InstanceClass.pm 011
lib/Moose/Exception/Role/InvalidAttributeOptions.pm 41
lib/Moose/Exception/Role/Method.pm 41
lib/Moose/Exception/Role/ParamsHash.pm 41
lib/Moose/Exception/Role/Role.pm 458
lib/Moose/Exception/Role/RoleForCreate.pm 51
lib/Moose/Exception/Role/RoleForCreateMOPClass.pm 51
lib/Moose/Exception/Role/TypeConstraint.pm 466
lib/Moose/Exception/RoleDoesTheExcludedRole.pm 109
lib/Moose/Exception/RoleExclusionConflict.pm 41
lib/Moose/Exception/RoleNameRequired.pm 41
lib/Moose/Exception/RoleNameRequiredForMooseMetaRole.pm 41
lib/Moose/Exception/RoleNamesDoNotMatch.pm 260
lib/Moose/Exception/RolesDoNotSupportAugment.pm 41
lib/Moose/Exception/RolesDoNotSupportExtends.pm 41
lib/Moose/Exception/RolesDoNotSupportInner.pm 41
lib/Moose/Exception/RolesDoNotSupportRegexReferencesForMethodModifiers.pm 41
lib/Moose/Exception/RolesInCreateTakesAnArrayRef.pm 41
lib/Moose/Exception/RolesListMustBeInstancesOfMooseMetaRole.pm 41
lib/Moose/Exception/SingleParamsToNewMustBeHashRef.pm 41
lib/Moose/Exception/TriggerMustBeACodeRef.pm 41
lib/Moose/Exception/TypeConstraintCannotBeUsedForAParameterizableType.pm 714
lib/Moose/Exception/TypeConstraintIsAlreadyCreated.pm 69
lib/Moose/Exception/TypeNamesDoNotMatch.pm 260
lib/Moose/Exception/TypeParameterMustBeMooseMetaType.pm 41
lib/Moose/Exception/UnableToCanonicalizeHandles.pm 41
lib/Moose/Exception/UnableToCanonicalizeNonRolePackage.pm 41
lib/Moose/Exception/UnableToRecognizeDelegateMetaclass.pm 41
lib/Moose/Exception/UndefinedHashKeysPassedToMethod.pm 41
lib/Moose/Exception/UnionCalledWithAnArrayRefAndAdditionalArgs.pm 41
lib/Moose/Exception/UnionTakesAtleastTwoTypeNames.pm 41
lib/Moose/Exception/ValidationFailedForInlineTypeConstraint.pm 41
lib/Moose/Exception/ValidationFailedForTypeConstraint.pm 41
lib/Moose/Exception/WrapTakesACodeRefToBless.pm 41
lib/Moose/Exception/WrongTypeConstraintGiven.pm 41
lib/Moose/Exception.pm 1028
lib/Moose/Exporter.pm 710
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 67
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 2120
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 52
lib/Moose/Meta/Attribute/Native/Trait/Bool.pm 52
lib/Moose/Meta/Attribute/Native/Trait/Code.pm 52
lib/Moose/Meta/Attribute/Native/Trait/Counter.pm 52
lib/Moose/Meta/Attribute/Native/Trait/Hash.pm 63
lib/Moose/Meta/Attribute/Native/Trait/Number.pm 52
lib/Moose/Meta/Attribute/Native/Trait/String.pm 52
lib/Moose/Meta/Attribute/Native/Trait.pm 105
lib/Moose/Meta/Attribute/Native.pm 52
lib/Moose/Meta/Attribute.pm 2931
lib/Moose/Meta/Class/Immutable/Trait.pm 63
lib/Moose/Meta/Class.pm 2019
lib/Moose/Meta/Instance.pm 62
lib/Moose/Meta/Method/Accessor/Native/Array/Writer.pm 41
lib/Moose/Meta/Method/Accessor/Native/Array/accessor.pm 41
lib/Moose/Meta/Method/Accessor/Native/Array/clear.pm 41
lib/Moose/Meta/Method/Accessor/Native/Array/count.pm 41
lib/Moose/Meta/Method/Accessor/Native/Array/delete.pm 41
lib/Moose/Meta/Method/Accessor/Native/Array/elements.pm 41
lib/Moose/Meta/Method/Accessor/Native/Array/first.pm 52
lib/Moose/Meta/Method/Accessor/Native/Array/first_index.pm 52
lib/Moose/Meta/Method/Accessor/Native/Array/get.pm 41
lib/Moose/Meta/Method/Accessor/Native/Array/grep.pm 52
lib/Moose/Meta/Method/Accessor/Native/Array/insert.pm 41
lib/Moose/Meta/Method/Accessor/Native/Array/is_empty.pm 41
lib/Moose/Meta/Method/Accessor/Native/Array/join.pm 52
lib/Moose/Meta/Method/Accessor/Native/Array/map.pm 52
lib/Moose/Meta/Method/Accessor/Native/Array/natatime.pm 63
lib/Moose/Meta/Method/Accessor/Native/Array/pop.pm 41
lib/Moose/Meta/Method/Accessor/Native/Array/push.pm 41
lib/Moose/Meta/Method/Accessor/Native/Array/reduce.pm 52
lib/Moose/Meta/Method/Accessor/Native/Array/set.pm 41
lib/Moose/Meta/Method/Accessor/Native/Array/shallow_clone.pm 41
lib/Moose/Meta/Method/Accessor/Native/Array/shift.pm 41
lib/Moose/Meta/Method/Accessor/Native/Array/shuffle.pm 41
lib/Moose/Meta/Method/Accessor/Native/Array/sort.pm 52
lib/Moose/Meta/Method/Accessor/Native/Array/sort_in_place.pm 52
lib/Moose/Meta/Method/Accessor/Native/Array/splice.pm 52
lib/Moose/Meta/Method/Accessor/Native/Array/uniq.pm 41
lib/Moose/Meta/Method/Accessor/Native/Array/unshift.pm 41
lib/Moose/Meta/Method/Accessor/Native/Array.pm 52
lib/Moose/Meta/Method/Accessor/Native/Bool/not.pm 41
lib/Moose/Meta/Method/Accessor/Native/Bool/set.pm 41
lib/Moose/Meta/Method/Accessor/Native/Bool/toggle.pm 41
lib/Moose/Meta/Method/Accessor/Native/Bool/unset.pm 41
lib/Moose/Meta/Method/Accessor/Native/Code/execute.pm 41
lib/Moose/Meta/Method/Accessor/Native/Code/execute_method.pm 41
lib/Moose/Meta/Method/Accessor/Native/Collection.pm 52
lib/Moose/Meta/Method/Accessor/Native/Counter/Writer.pm 41
lib/Moose/Meta/Method/Accessor/Native/Counter/dec.pm 41
lib/Moose/Meta/Method/Accessor/Native/Counter/inc.pm 41
lib/Moose/Meta/Method/Accessor/Native/Counter/reset.pm 41
lib/Moose/Meta/Method/Accessor/Native/Counter/set.pm 41
lib/Moose/Meta/Method/Accessor/Native/Hash/Writer.pm 41
lib/Moose/Meta/Method/Accessor/Native/Hash/accessor.pm 41
lib/Moose/Meta/Method/Accessor/Native/Hash/clear.pm 41
lib/Moose/Meta/Method/Accessor/Native/Hash/count.pm 41
lib/Moose/Meta/Method/Accessor/Native/Hash/defined.pm 41
lib/Moose/Meta/Method/Accessor/Native/Hash/delete.pm 41
lib/Moose/Meta/Method/Accessor/Native/Hash/elements.pm 41
lib/Moose/Meta/Method/Accessor/Native/Hash/exists.pm 41
lib/Moose/Meta/Method/Accessor/Native/Hash/get.pm 41
lib/Moose/Meta/Method/Accessor/Native/Hash/is_empty.pm 41
lib/Moose/Meta/Method/Accessor/Native/Hash/keys.pm 41
lib/Moose/Meta/Method/Accessor/Native/Hash/kv.pm 41
lib/Moose/Meta/Method/Accessor/Native/Hash/set.pm 63
lib/Moose/Meta/Method/Accessor/Native/Hash/shallow_clone.pm 41
lib/Moose/Meta/Method/Accessor/Native/Hash/values.pm 41
lib/Moose/Meta/Method/Accessor/Native/Hash.pm 52
lib/Moose/Meta/Method/Accessor/Native/Number/abs.pm 41
lib/Moose/Meta/Method/Accessor/Native/Number/add.pm 41
lib/Moose/Meta/Method/Accessor/Native/Number/div.pm 41
lib/Moose/Meta/Method/Accessor/Native/Number/mod.pm 41
lib/Moose/Meta/Method/Accessor/Native/Number/mul.pm 41
lib/Moose/Meta/Method/Accessor/Native/Number/set.pm 41
lib/Moose/Meta/Method/Accessor/Native/Number/sub.pm 41
lib/Moose/Meta/Method/Accessor/Native/Reader.pm 41
lib/Moose/Meta/Method/Accessor/Native/String/append.pm 41
lib/Moose/Meta/Method/Accessor/Native/String/chomp.pm 41
lib/Moose/Meta/Method/Accessor/Native/String/chop.pm 41
lib/Moose/Meta/Method/Accessor/Native/String/clear.pm 41
lib/Moose/Meta/Method/Accessor/Native/String/inc.pm 41
lib/Moose/Meta/Method/Accessor/Native/String/length.pm 41
lib/Moose/Meta/Method/Accessor/Native/String/match.pm 52
lib/Moose/Meta/Method/Accessor/Native/String/prepend.pm 41
lib/Moose/Meta/Method/Accessor/Native/String/replace.pm 63
lib/Moose/Meta/Method/Accessor/Native/String/substr.pm 74
lib/Moose/Meta/Method/Accessor/Native/Writer.pm 64
lib/Moose/Meta/Method/Accessor/Native.pm 63
lib/Moose/Meta/Method/Accessor.pm 62
lib/Moose/Meta/Method/Augmented.pm 52
lib/Moose/Meta/Method/Constructor.pm 62
lib/Moose/Meta/Method/Delegation.pm 62
lib/Moose/Meta/Method/Destructor.pm 62
lib/Moose/Meta/Method/Meta.pm 62
lib/Moose/Meta/Method/Overridden.pm 52
lib/Moose/Meta/Method.pm 52
lib/Moose/Meta/Mixin/AttributeCore.pm 52
lib/Moose/Meta/Object/Trait.pm 62
lib/Moose/Meta/Role/Application/RoleSummation.pm 108
lib/Moose/Meta/Role/Application/ToClass.pm 1815
lib/Moose/Meta/Role/Application/ToInstance.pm 52
lib/Moose/Meta/Role/Application/ToRole.pm 2421
lib/Moose/Meta/Role/Application.pm 52
lib/Moose/Meta/Role/Attribute.pm 52
lib/Moose/Meta/Role/Composite.pm 58
lib/Moose/Meta/Role/Method/Conflicting.pm 62
lib/Moose/Meta/Role/Method/Required.pm 62
lib/Moose/Meta/Role/Method.pm 62
lib/Moose/Meta/Role.pm 1310
lib/Moose/Meta/TypeCoercion/Union.pm 74
lib/Moose/Meta/TypeCoercion.pm 62
lib/Moose/Meta/TypeConstraint/Class.pm 52
lib/Moose/Meta/TypeConstraint/DuckType.pm 52
lib/Moose/Meta/TypeConstraint/Enum.pm 52
lib/Moose/Meta/TypeConstraint/Parameterizable.pm 96
lib/Moose/Meta/TypeConstraint/Parameterized.pm 87
lib/Moose/Meta/TypeConstraint/Registry.pm 62
lib/Moose/Meta/TypeConstraint/Role.pm 52
lib/Moose/Meta/TypeConstraint/Union.pm 62
lib/Moose/Meta/TypeConstraint.pm 95
lib/Moose/Object.pm 73
lib/Moose/Role.pm 1210
lib/Moose/Spec/Role.pod 52
lib/Moose/Unsweetened.pod 52
lib/Moose/Util/MetaRole.pm 74
lib/Moose/Util/TypeConstraints/Builtins.pm 51
lib/Moose/Util/TypeConstraints.pm 128
lib/Moose/Util.pm 515
lib/Moose.pm 89
lib/Test/Moose.pm 93
lib/metaclass.pm 104
lib/oose.pm 52
moose-todo.txt 90
t/00-report-prereqs.dd 0164
t/00-report-prereqs.t 233143
t/attributes/accessor_override_method.t 31
t/attributes/accessor_overwrite_warning.t 31
t/basics/always_strict_warnings.t 35
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/super_recursion.t 2525
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.t 02
t/cmop/anon_class_leak.t 46
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/frame-leak.t 023
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/exporter_sub_names.t 044
t/metaclasses/meta_name.t 69
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 098
xs/ToInstance.c 0251
xt/author/00-compile.t 4330
xt/author/memory_leaks.t 7133
xt/author/no-tabs.t 0938
xt/release/00-compile.t 0432
xt/release/authority.t 05
xt/release/distmeta.t 31
xt/release/kwalitee.t 27
xt/release/no-tabs.t 4420
xt/release/pod-coverage.t 28
xt/release/pod-syntax.t 31
624 files changed (This is a version diff) 78846703
@@ -1,6 +1,108 @@
 Also see Moose::Manual::Delta for more details of, and workarounds
 for, noteworthy changes.
 
+2.1213   2014-09-25
+
+  [BUG FIXES]
+
+   - closed a memory leak in Moose exception objects where captured stack
+     trace frames would contain circular references to the exception objects
+     themselves (Graham Knop, PR#81)
+
+2.1212   2014-09-19
+
+  [TEST FIXES]
+
+  - fix tests that fail on altered warning messages in perl 5.21.4 (RT#98987)
+
+2.1211   2014-08-11
+
+  [DOCUMENTATION]
+
+  - Updated Changes and Moose::Manual::Delta to note when we started removing
+    lazy_build from docs. Also added a note in the Moose::Meta::Attribute docs
+    stating that use of this feature is discouraged.
+  - Added a pointer from the auto_deref feature to
+    Moose::Meta::Attribute::Native. This is often a better choice.
+
+  [OTHER]
+
+  - The subs installed by Moose::Exporter->setup_import_methods are now named
+    using Sub::Name (Dave Rolsky, RT#97572)
+
+2.1210   2014-07-03
+
+  [DOCUMENTATION]
+
+  - Clarify that Moose::Exception exists for internal usage and that user
+    code is better off 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 +118,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]
@@ -167,9 +274,8 @@ for, noteworthy changes.
     Rolsky)
 
   - You can now use Specio types instead of Moose builtins or
-    MooseX::Types. As a bonus, Specio types inline coercion. However, this
-    support is still experimental (as is Specio), so use it with care. (Dave
-    Rolsky)
+    MooseX::Types. However, this support is still experimental (as is Specio),
+    so use it with care. (Dave Rolsky)
 
 2.0900   2013-05-26 (TRIAL RELEASE)
 
@@ -245,6 +351,11 @@ for, noteworthy changes.
     nothing more than a compatibility shim at this point, there's no reason to
     not make it as compatible as possible. Reported by Moritz Onken. (doy)
 
+  [DOCUMENTATION]
+
+  - The lazy_build attribute feature was removed from
+    Moose::Manual::BestPractices.
+
 2.0601   2012-05-01
 
   [BUG FIXES]
@@ -704,6 +815,11 @@ for, noteworthy changes.
     Additionally the 'Object' constraint no longer rejects objects implemented
     as a blessed regular expression. (David Leadbeater)
 
+  [DOCUMENTATION]
+
+  - The lazy_build attribute feature was mostly removed from the docs and is
+    no longer encouraged.
+
   [OTHER]
 
   - Moose::Manual::Support now explicitly states when major releases are
@@ -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.020.
 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
@@ -42,6 +41,7 @@ bin/moose-outdated
 dist.ini
 doc/moosex-compile
 inc/CheckDelta.pm
+inc/CheckReleaseType.pm
 inc/Clean.pm
 inc/ExtractInlineTests.pm
 inc/GenerateDocs.pm
@@ -49,7 +49,8 @@ inc/GitUpToDate.pm
 inc/MMHelper.pm
 inc/MakeMaker.pm
 inc/MyInline.pm
-inc/RequireAuthorDeps.pm
+inc/SimpleAuthority.pm
+inc/SimpleProvides.pm
 inc/TestRelease.pm
 lib/Class/MOP.pm
 lib/Class/MOP/Attribute.pm
@@ -292,6 +293,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 +305,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 +315,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,11 +479,11 @@ lib/Moose/Util/TypeConstraints/Builtins.pm
 lib/Test/Moose.pm
 lib/metaclass.pm
 lib/oose.pm
-moose-todo.txt
 mop.c
 mop.h
 perltidyrc
 ppport.h
+t/00-report-prereqs.dd
 t/00-report-prereqs.t
 t/000_load.t
 t/attributes/accessor_context.t
@@ -716,11 +716,9 @@ 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/frame-leak.t
 t/exceptions/meta-role.t
 t/exceptions/metaclass.t
 t/exceptions/moose-exporter.t
@@ -760,6 +758,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
@@ -805,6 +806,7 @@ 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/exporter_sub_names.t
 t/metaclasses/goto_moose_import.t
 t/metaclasses/immutable_metaclass_compat_bug.t
 t/metaclasses/meta_name.t
@@ -861,14 +863,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 +931,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 +960,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 +978,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
@@ -992,18 +993,19 @@ xs/Method.xs
 xs/Moose.xs
 xs/Overload.xs
 xs/Package.xs
+xs/ToInstance.c
 xs/typemap
-xt/author/00-compile.t
 xt/author/debugger-duck_type.t
 xt/author/memory_leaks.t
+xt/author/no-tabs.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
 xt/release/eol.t
 xt/release/kwalitee.t
 xt/release/mojibake.t
-xt/release/no-tabs.t
 xt/release/pod-coverage.t
 xt/release/pod-spell.t
 xt/release/pod-syntax.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.020, CPAN::Meta::Converter version 2.142060",
    "license" : [
       "perl_5"
    ],
@@ -51,36 +51,70 @@
          "requires" : {
             "Dist::CheckConflicts" : "0.02",
             "ExtUtils::CBuilder" : "0.27",
-            "ExtUtils::MakeMaker" : "6.30",
+            "ExtUtils::MakeMaker" : "0",
             "File::Spec" : "0"
          }
       },
       "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",
-            "Dist::Zilla::Plugin::Authority" : "0",
+            "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::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.21",
+            "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::CheckChangesHasContent" : "0",
+            "Dist::Zilla::Plugin::CheckVersionIncrement" : "0",
             "Dist::Zilla::Plugin::ConfirmRelease" : "0",
-            "Dist::Zilla::Plugin::Conflicts" : "0",
-            "Dist::Zilla::Plugin::ContributorsFromGit" : "0",
+            "Dist::Zilla::Plugin::Conflicts" : "0.16",
             "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",
             "Dist::Zilla::Plugin::Git::Commit" : "0",
+            "Dist::Zilla::Plugin::Git::Contributors" : "0",
             "Dist::Zilla::Plugin::Git::Push" : "0",
             "Dist::Zilla::Plugin::Git::Remote::Check" : "0",
             "Dist::Zilla::Plugin::Git::Tag" : "0",
@@ -97,62 +131,33 @@
             "Dist::Zilla::Plugin::MetaYAML" : "0",
             "Dist::Zilla::Plugin::MojibakeTests" : "0",
             "Dist::Zilla::Plugin::NextRelease" : "0",
-            "Dist::Zilla::Plugin::PkgVersion" : "0",
+            "Dist::Zilla::Plugin::PkgVersion" : "5.010",
             "Dist::Zilla::Plugin::PodSyntaxTests" : "0",
             "Dist::Zilla::Plugin::PodWeaver" : "4.004",
             "Dist::Zilla::Plugin::Prereqs" : "0",
             "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"
+            "inc::CheckReleaseType" : "0",
+            "inc::SimpleAuthority" : "0"
          }
       },
       "runtime" : {
@@ -165,12 +170,13 @@
             "Class::Load::XS" : "0.01",
             "Data::OptList" : "0.107",
             "Devel::GlobalDestruction" : "0",
-            "Devel::StackTrace" : "1.30",
+            "Devel::StackTrace" : "1.33",
             "Dist::CheckConflicts" : "0.02",
             "Eval::Closure" : "0.04",
             "List::MoreUtils" : "0.28",
             "MRO::Compat" : "0.05",
             "Module::Runtime" : "0.014",
+            "Module::Runtime::Conflicts" : "0",
             "Package::DeprecationManager" : "0.11",
             "Package::Stash" : "0.32",
             "Package::Stash::XS" : "0.24",
@@ -181,15 +187,21 @@
             "Task::Weaken" : "0",
             "Try::Tiny" : "0.02",
             "parent" : "0.223",
-            "perl" : "v5.8.3"
+            "perl" : "v5.8.3",
+            "strict" : "1.03",
+            "warnings" : "1.03"
          }
       },
       "test" : {
          "recommends" : {
-            "CPAN::Meta" : "0",
-            "CPAN::Meta::Requirements" : "2.120900"
+            "CPAN::Meta" : "2.120900"
          },
          "requires" : {
+            "CPAN::Meta::Check" : "0.007",
+            "CPAN::Meta::Requirements" : "0",
+            "ExtUtils::MakeMaker" : "0",
+            "File::Spec" : "0",
+            "Test::CleanNamespaces" : "0.13",
             "Test::Fatal" : "0.001",
             "Test::More" : "0.88",
             "Test::Requires" : "0.05"
@@ -199,1359 +211,1355 @@
    "provides" : {
       "Class::MOP" : {
          "file" : "lib/Class/MOP.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Class::MOP::Attribute" : {
          "file" : "lib/Class/MOP/Attribute.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Class::MOP::Class" : {
          "file" : "lib/Class/MOP/Class.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Class::MOP::Instance" : {
          "file" : "lib/Class/MOP/Instance.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Class::MOP::Method" : {
          "file" : "lib/Class/MOP/Method.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Class::MOP::Method::Accessor" : {
          "file" : "lib/Class/MOP/Method/Accessor.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Class::MOP::Method::Constructor" : {
          "file" : "lib/Class/MOP/Method/Constructor.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Class::MOP::Method::Generated" : {
          "file" : "lib/Class/MOP/Method/Generated.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Class::MOP::Method::Inlined" : {
          "file" : "lib/Class/MOP/Method/Inlined.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Class::MOP::Method::Meta" : {
          "file" : "lib/Class/MOP/Method/Meta.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Class::MOP::Method::Overload" : {
          "file" : "lib/Class/MOP/Method/Overload.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Class::MOP::Method::Wrapped" : {
          "file" : "lib/Class/MOP/Method/Wrapped.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Class::MOP::Module" : {
          "file" : "lib/Class/MOP/Module.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Class::MOP::Object" : {
          "file" : "lib/Class/MOP/Object.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Class::MOP::Package" : {
          "file" : "lib/Class/MOP/Package.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose" : {
          "file" : "lib/Moose.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Cookbook" : {
          "file" : "lib/Moose/Cookbook.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Cookbook::Basics::BankAccount_MethodModifiersAndSubclassing" : {
          "file" : "lib/Moose/Cookbook/Basics/BankAccount_MethodModifiersAndSubclassing.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Cookbook::Basics::BinaryTree_AttributeFeatures" : {
          "file" : "lib/Moose/Cookbook/Basics/BinaryTree_AttributeFeatures.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Cookbook::Basics::BinaryTree_BuilderAndLazyBuild" : {
          "file" : "lib/Moose/Cookbook/Basics/BinaryTree_BuilderAndLazyBuild.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Cookbook::Basics::Company_Subtypes" : {
          "file" : "lib/Moose/Cookbook/Basics/Company_Subtypes.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Cookbook::Basics::DateTime_ExtendingNonMooseParent" : {
          "file" : "lib/Moose/Cookbook/Basics/DateTime_ExtendingNonMooseParent.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Cookbook::Basics::Document_AugmentAndInner" : {
          "file" : "lib/Moose/Cookbook/Basics/Document_AugmentAndInner.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Cookbook::Basics::Genome_OverloadingSubtypesAndCoercion" : {
          "file" : "lib/Moose/Cookbook/Basics/Genome_OverloadingSubtypesAndCoercion.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Cookbook::Basics::HTTP_SubtypesAndCoercion" : {
          "file" : "lib/Moose/Cookbook/Basics/HTTP_SubtypesAndCoercion.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Cookbook::Basics::Immutable" : {
          "file" : "lib/Moose/Cookbook/Basics/Immutable.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Cookbook::Basics::Person_BUILDARGSAndBUILD" : {
          "file" : "lib/Moose/Cookbook/Basics/Person_BUILDARGSAndBUILD.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Cookbook::Basics::Point_AttributesAndSubclassing" : {
          "file" : "lib/Moose/Cookbook/Basics/Point_AttributesAndSubclassing.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Cookbook::Extending::Debugging_BaseClassRole" : {
          "file" : "lib/Moose/Cookbook/Extending/Debugging_BaseClassRole.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Cookbook::Extending::ExtensionOverview" : {
          "file" : "lib/Moose/Cookbook/Extending/ExtensionOverview.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Cookbook::Extending::Mooseish_MooseSugar" : {
          "file" : "lib/Moose/Cookbook/Extending/Mooseish_MooseSugar.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Cookbook::Legacy::Debugging_BaseClassReplacement" : {
          "file" : "lib/Moose/Cookbook/Legacy/Debugging_BaseClassReplacement.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
+      },
+      "Moose::Cookbook::Legacy::Labeled_AttributeMetaclass" : {
+         "file" : "lib/Moose/Cookbook/Legacy/Labeled_AttributeMetaclass.pod",
+         "version" : "2.1213"
+      },
+      "Moose::Cookbook::Legacy::Table_ClassMetaclass" : {
+         "file" : "lib/Moose/Cookbook/Legacy/Table_ClassMetaclass.pod",
+         "version" : "2.1213"
       },
       "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.1213"
       },
       "Moose::Cookbook::Meta::Labeled_AttributeTrait" : {
          "file" : "lib/Moose/Cookbook/Meta/Labeled_AttributeTrait.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "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.1213"
       },
       "Moose::Cookbook::Meta::Table_MetaclassTrait" : {
          "file" : "lib/Moose/Cookbook/Meta/Table_MetaclassTrait.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Cookbook::Meta::WhyMeta" : {
          "file" : "lib/Moose/Cookbook/Meta/WhyMeta.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Cookbook::Roles::ApplicationToInstance" : {
          "file" : "lib/Moose/Cookbook/Roles/ApplicationToInstance.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Cookbook::Roles::Comparable_CodeReuse" : {
          "file" : "lib/Moose/Cookbook/Roles/Comparable_CodeReuse.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Cookbook::Roles::Restartable_AdvancedComposition" : {
          "file" : "lib/Moose/Cookbook/Roles/Restartable_AdvancedComposition.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Cookbook::Snack::Keywords" : {
          "file" : "lib/Moose/Cookbook/Snack/Keywords.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Cookbook::Snack::Types" : {
          "file" : "lib/Moose/Cookbook/Snack/Types.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Cookbook::Style" : {
          "file" : "lib/Moose/Cookbook/Style.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception" : {
          "file" : "lib/Moose/Exception.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::AccessorMustReadWrite" : {
          "file" : "lib/Moose/Exception/AccessorMustReadWrite.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::AddParameterizableTypeTakesParameterizableType" : {
          "file" : "lib/Moose/Exception/AddParameterizableTypeTakesParameterizableType.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::AddRoleTakesAMooseMetaRoleInstance" : {
          "file" : "lib/Moose/Exception/AddRoleTakesAMooseMetaRoleInstance.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::AddRoleToARoleTakesAMooseMetaRole" : {
          "file" : "lib/Moose/Exception/AddRoleToARoleTakesAMooseMetaRole.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::ApplyTakesABlessedInstance" : {
          "file" : "lib/Moose/Exception/ApplyTakesABlessedInstance.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::AttachToClassNeedsAClassMOPClassInstanceOrASubclass" : {
          "file" : "lib/Moose/Exception/AttachToClassNeedsAClassMOPClassInstanceOrASubclass.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::AttributeConflictInRoles" : {
          "file" : "lib/Moose/Exception/AttributeConflictInRoles.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::AttributeConflictInSummation" : {
          "file" : "lib/Moose/Exception/AttributeConflictInSummation.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::AttributeExtensionIsNotSupportedInRoles" : {
          "file" : "lib/Moose/Exception/AttributeExtensionIsNotSupportedInRoles.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::AttributeIsRequired" : {
          "file" : "lib/Moose/Exception/AttributeIsRequired.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::AttributeMustBeAnClassMOPMixinAttributeCoreOrSubclass" : {
          "file" : "lib/Moose/Exception/AttributeMustBeAnClassMOPMixinAttributeCoreOrSubclass.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::AttributeNamesDoNotMatch" : {
          "file" : "lib/Moose/Exception/AttributeNamesDoNotMatch.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::AttributeValueIsNotAnObject" : {
          "file" : "lib/Moose/Exception/AttributeValueIsNotAnObject.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::AttributeValueIsNotDefined" : {
          "file" : "lib/Moose/Exception/AttributeValueIsNotDefined.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::AutoDeRefNeedsArrayRefOrHashRef" : {
          "file" : "lib/Moose/Exception/AutoDeRefNeedsArrayRefOrHashRef.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::BadOptionFormat" : {
          "file" : "lib/Moose/Exception/BadOptionFormat.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::BothBuilderAndDefaultAreNotAllowed" : {
          "file" : "lib/Moose/Exception/BothBuilderAndDefaultAreNotAllowed.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::BuilderDoesNotExist" : {
          "file" : "lib/Moose/Exception/BuilderDoesNotExist.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::BuilderMethodNotSupportedForAttribute" : {
          "file" : "lib/Moose/Exception/BuilderMethodNotSupportedForAttribute.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::BuilderMethodNotSupportedForInlineAttribute" : {
          "file" : "lib/Moose/Exception/BuilderMethodNotSupportedForInlineAttribute.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::BuilderMustBeAMethodName" : {
          "file" : "lib/Moose/Exception/BuilderMustBeAMethodName.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CallingMethodOnAnImmutableInstance" : {
          "file" : "lib/Moose/Exception/CallingMethodOnAnImmutableInstance.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CallingReadOnlyMethodOnAnImmutableInstance" : {
          "file" : "lib/Moose/Exception/CallingReadOnlyMethodOnAnImmutableInstance.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CanExtendOnlyClasses" : {
          "file" : "lib/Moose/Exception/CanExtendOnlyClasses.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CanOnlyConsumeRole" : {
          "file" : "lib/Moose/Exception/CanOnlyConsumeRole.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CanOnlyWrapBlessedCode" : {
          "file" : "lib/Moose/Exception/CanOnlyWrapBlessedCode.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CanReblessOnlyIntoASubclass" : {
          "file" : "lib/Moose/Exception/CanReblessOnlyIntoASubclass.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CanReblessOnlyIntoASuperclass" : {
          "file" : "lib/Moose/Exception/CanReblessOnlyIntoASuperclass.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotAddAdditionalTypeCoercionsToUnion" : {
          "file" : "lib/Moose/Exception/CannotAddAdditionalTypeCoercionsToUnion.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotAddAsAnAttributeToARole" : {
          "file" : "lib/Moose/Exception/CannotAddAsAnAttributeToARole.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotApplyBaseClassRolesToRole" : {
          "file" : "lib/Moose/Exception/CannotApplyBaseClassRolesToRole.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotAssignValueToReadOnlyAccessor" : {
          "file" : "lib/Moose/Exception/CannotAssignValueToReadOnlyAccessor.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotAugmentIfLocalMethodPresent" : {
          "file" : "lib/Moose/Exception/CannotAugmentIfLocalMethodPresent.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotAugmentNoSuperMethod" : {
          "file" : "lib/Moose/Exception/CannotAugmentNoSuperMethod.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotAutoDerefWithoutIsa" : {
          "file" : "lib/Moose/Exception/CannotAutoDerefWithoutIsa.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotAutoDereferenceTypeConstraint" : {
          "file" : "lib/Moose/Exception/CannotAutoDereferenceTypeConstraint.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotCalculateNativeType" : {
          "file" : "lib/Moose/Exception/CannotCalculateNativeType.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotCallAnAbstractBaseMethod" : {
          "file" : "lib/Moose/Exception/CannotCallAnAbstractBaseMethod.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotCallAnAbstractMethod" : {
          "file" : "lib/Moose/Exception/CannotCallAnAbstractMethod.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotCoerceAWeakRef" : {
          "file" : "lib/Moose/Exception/CannotCoerceAWeakRef.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotCoerceAttributeWhichHasNoCoercion" : {
          "file" : "lib/Moose/Exception/CannotCoerceAttributeWhichHasNoCoercion.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotCreateHigherOrderTypeWithoutATypeParameter" : {
          "file" : "lib/Moose/Exception/CannotCreateHigherOrderTypeWithoutATypeParameter.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresent" : {
          "file" : "lib/Moose/Exception/CannotCreateMethodAliasLocalMethodIsPresent.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresentInClass" : {
          "file" : "lib/Moose/Exception/CannotCreateMethodAliasLocalMethodIsPresentInClass.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotDelegateLocalMethodIsPresent" : {
          "file" : "lib/Moose/Exception/CannotDelegateLocalMethodIsPresent.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotDelegateWithoutIsa" : {
          "file" : "lib/Moose/Exception/CannotDelegateWithoutIsa.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotFindDelegateMetaclass" : {
          "file" : "lib/Moose/Exception/CannotFindDelegateMetaclass.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotFindType" : {
          "file" : "lib/Moose/Exception/CannotFindType.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotFindTypeGivenToMatchOnType" : {
          "file" : "lib/Moose/Exception/CannotFindTypeGivenToMatchOnType.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotFixMetaclassCompatibility" : {
          "file" : "lib/Moose/Exception/CannotFixMetaclassCompatibility.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotGenerateInlineConstraint" : {
          "file" : "lib/Moose/Exception/CannotGenerateInlineConstraint.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotInitializeMooseMetaRoleComposite" : {
          "file" : "lib/Moose/Exception/CannotInitializeMooseMetaRoleComposite.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotInlineTypeConstraintCheck" : {
          "file" : "lib/Moose/Exception/CannotInlineTypeConstraintCheck.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotLocatePackageInINC" : {
          "file" : "lib/Moose/Exception/CannotLocatePackageInINC.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotMakeMetaclassCompatible" : {
          "file" : "lib/Moose/Exception/CannotMakeMetaclassCompatible.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotOverrideALocalMethod" : {
          "file" : "lib/Moose/Exception/CannotOverrideALocalMethod.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotOverrideBodyOfMetaMethods" : {
          "file" : "lib/Moose/Exception/CannotOverrideBodyOfMetaMethods.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotOverrideLocalMethodIsPresent" : {
          "file" : "lib/Moose/Exception/CannotOverrideLocalMethodIsPresent.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotOverrideNoSuperMethod" : {
          "file" : "lib/Moose/Exception/CannotOverrideNoSuperMethod.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotRegisterUnnamedTypeConstraint" : {
          "file" : "lib/Moose/Exception/CannotRegisterUnnamedTypeConstraint.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CannotUseLazyBuildAndDefaultSimultaneously" : {
          "file" : "lib/Moose/Exception/CannotUseLazyBuildAndDefaultSimultaneously.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CircularReferenceInAlso" : {
          "file" : "lib/Moose/Exception/CircularReferenceInAlso.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::ClassDoesNotHaveInitMeta" : {
          "file" : "lib/Moose/Exception/ClassDoesNotHaveInitMeta.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::ClassDoesTheExcludedRole" : {
          "file" : "lib/Moose/Exception/ClassDoesTheExcludedRole.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::ClassNamesDoNotMatch" : {
          "file" : "lib/Moose/Exception/ClassNamesDoNotMatch.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CloneObjectExpectsAnInstanceOfMetaclass" : {
          "file" : "lib/Moose/Exception/CloneObjectExpectsAnInstanceOfMetaclass.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CodeBlockMustBeACodeRef" : {
          "file" : "lib/Moose/Exception/CodeBlockMustBeACodeRef.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CoercingWithoutCoercions" : {
          "file" : "lib/Moose/Exception/CoercingWithoutCoercions.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CoercionAlreadyExists" : {
          "file" : "lib/Moose/Exception/CoercionAlreadyExists.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CoercionNeedsTypeConstraint" : {
          "file" : "lib/Moose/Exception/CoercionNeedsTypeConstraint.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::ConflictDetectedInCheckRoleExclusions" : {
          "file" : "lib/Moose/Exception/ConflictDetectedInCheckRoleExclusions.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::ConflictDetectedInCheckRoleExclusionsInToClass" : {
          "file" : "lib/Moose/Exception/ConflictDetectedInCheckRoleExclusionsInToClass.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::ConstructClassInstanceTakesPackageName" : {
          "file" : "lib/Moose/Exception/ConstructClassInstanceTakesPackageName.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CouldNotCreateMethod" : {
          "file" : "lib/Moose/Exception/CouldNotCreateMethod.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CouldNotCreateWriter" : {
          "file" : "lib/Moose/Exception/CouldNotCreateWriter.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CouldNotEvalConstructor" : {
          "file" : "lib/Moose/Exception/CouldNotEvalConstructor.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CouldNotEvalDestructor" : {
          "file" : "lib/Moose/Exception/CouldNotEvalDestructor.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CouldNotFindTypeConstraintToCoerceFrom" : {
          "file" : "lib/Moose/Exception/CouldNotFindTypeConstraintToCoerceFrom.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CouldNotGenerateInlineAttributeMethod" : {
          "file" : "lib/Moose/Exception/CouldNotGenerateInlineAttributeMethod.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CouldNotLocateTypeConstraintForUnion" : {
          "file" : "lib/Moose/Exception/CouldNotLocateTypeConstraintForUnion.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CouldNotParseType" : {
          "file" : "lib/Moose/Exception/CouldNotParseType.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CreateMOPClassTakesArrayRefOfAttributes" : {
          "file" : "lib/Moose/Exception/CreateMOPClassTakesArrayRefOfAttributes.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CreateMOPClassTakesArrayRefOfSuperclasses" : {
          "file" : "lib/Moose/Exception/CreateMOPClassTakesArrayRefOfSuperclasses.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CreateMOPClassTakesHashRefOfMethods" : {
          "file" : "lib/Moose/Exception/CreateMOPClassTakesHashRefOfMethods.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CreateTakesArrayRefOfRoles" : {
          "file" : "lib/Moose/Exception/CreateTakesArrayRefOfRoles.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CreateTakesHashRefOfAttributes" : {
          "file" : "lib/Moose/Exception/CreateTakesHashRefOfAttributes.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::CreateTakesHashRefOfMethods" : {
          "file" : "lib/Moose/Exception/CreateTakesHashRefOfMethods.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::DefaultToMatchOnTypeMustBeCodeRef" : {
          "file" : "lib/Moose/Exception/DefaultToMatchOnTypeMustBeCodeRef.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::DelegationToAClassWhichIsNotLoaded" : {
          "file" : "lib/Moose/Exception/DelegationToAClassWhichIsNotLoaded.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::DelegationToARoleWhichIsNotLoaded" : {
          "file" : "lib/Moose/Exception/DelegationToARoleWhichIsNotLoaded.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::DelegationToATypeWhichIsNotAClass" : {
          "file" : "lib/Moose/Exception/DelegationToATypeWhichIsNotAClass.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::DoesRequiresRoleName" : {
          "file" : "lib/Moose/Exception/DoesRequiresRoleName.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::EnumCalledWithAnArrayRefAndAdditionalArgs" : {
          "file" : "lib/Moose/Exception/EnumCalledWithAnArrayRefAndAdditionalArgs.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::EnumValuesMustBeString" : {
          "file" : "lib/Moose/Exception/EnumValuesMustBeString.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::ExtendsMissingArgs" : {
          "file" : "lib/Moose/Exception/ExtendsMissingArgs.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::HandlesMustBeAHashRef" : {
          "file" : "lib/Moose/Exception/HandlesMustBeAHashRef.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::IllegalInheritedOptions" : {
          "file" : "lib/Moose/Exception/IllegalInheritedOptions.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::IllegalMethodTypeToAddMethodModifier" : {
          "file" : "lib/Moose/Exception/IllegalMethodTypeToAddMethodModifier.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::IncompatibleMetaclassOfSuperclass" : {
          "file" : "lib/Moose/Exception/IncompatibleMetaclassOfSuperclass.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::InitMetaRequiresClass" : {
          "file" : "lib/Moose/Exception/InitMetaRequiresClass.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::InitializeTakesUnBlessedPackageName" : {
          "file" : "lib/Moose/Exception/InitializeTakesUnBlessedPackageName.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::InstanceBlessedIntoWrongClass" : {
          "file" : "lib/Moose/Exception/InstanceBlessedIntoWrongClass.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::InstanceMustBeABlessedReference" : {
          "file" : "lib/Moose/Exception/InstanceMustBeABlessedReference.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::InvalidArgPassedToMooseUtilMetaRole" : {
          "file" : "lib/Moose/Exception/InvalidArgPassedToMooseUtilMetaRole.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::InvalidArgumentToMethod" : {
          "file" : "lib/Moose/Exception/InvalidArgumentToMethod.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::InvalidArgumentsToTraitAliases" : {
          "file" : "lib/Moose/Exception/InvalidArgumentsToTraitAliases.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::InvalidBaseTypeGivenToCreateParameterizedTypeConstraint" : {
          "file" : "lib/Moose/Exception/InvalidBaseTypeGivenToCreateParameterizedTypeConstraint.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::InvalidHandleValue" : {
          "file" : "lib/Moose/Exception/InvalidHandleValue.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::InvalidHasProvidedInARole" : {
          "file" : "lib/Moose/Exception/InvalidHasProvidedInARole.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::InvalidNameForType" : {
          "file" : "lib/Moose/Exception/InvalidNameForType.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::InvalidRoleApplication" : {
          "file" : "lib/Moose/Exception/InvalidRoleApplication.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::InvalidTypeConstraint" : {
          "file" : "lib/Moose/Exception/InvalidTypeConstraint.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::InvalidTypeGivenToCreateParameterizedTypeConstraint" : {
          "file" : "lib/Moose/Exception/InvalidTypeGivenToCreateParameterizedTypeConstraint.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::InvalidValueForIs" : {
          "file" : "lib/Moose/Exception/InvalidValueForIs.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::IsaDoesNotDoTheRole" : {
          "file" : "lib/Moose/Exception/IsaDoesNotDoTheRole.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::IsaLacksDoesMethod" : {
          "file" : "lib/Moose/Exception/IsaLacksDoesMethod.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::LazyAttributeNeedsADefault" : {
          "file" : "lib/Moose/Exception/LazyAttributeNeedsADefault.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::Legacy" : {
          "file" : "lib/Moose/Exception/Legacy.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MOPAttributeNewNeedsAttributeName" : {
          "file" : "lib/Moose/Exception/MOPAttributeNewNeedsAttributeName.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MatchActionMustBeACodeRef" : {
          "file" : "lib/Moose/Exception/MatchActionMustBeACodeRef.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MessageParameterMustBeCodeRef" : {
          "file" : "lib/Moose/Exception/MessageParameterMustBeCodeRef.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MetaclassIsAClassNotASubclassOfGivenMetaclass" : {
          "file" : "lib/Moose/Exception/MetaclassIsAClassNotASubclassOfGivenMetaclass.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MetaclassIsARoleNotASubclassOfGivenMetaclass" : {
          "file" : "lib/Moose/Exception/MetaclassIsARoleNotASubclassOfGivenMetaclass.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MetaclassIsNotASubclassOfGivenMetaclass" : {
          "file" : "lib/Moose/Exception/MetaclassIsNotASubclassOfGivenMetaclass.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MetaclassMustBeASubclassOfMooseMetaClass" : {
          "file" : "lib/Moose/Exception/MetaclassMustBeASubclassOfMooseMetaClass.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MetaclassMustBeASubclassOfMooseMetaRole" : {
          "file" : "lib/Moose/Exception/MetaclassMustBeASubclassOfMooseMetaRole.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MetaclassMustBeDerivedFromClassMOPClass" : {
          "file" : "lib/Moose/Exception/MetaclassMustBeDerivedFromClassMOPClass.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MetaclassNotLoaded" : {
          "file" : "lib/Moose/Exception/MetaclassNotLoaded.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MetaclassTypeIncompatible" : {
          "file" : "lib/Moose/Exception/MetaclassTypeIncompatible.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MethodExpectedAMetaclassObject" : {
          "file" : "lib/Moose/Exception/MethodExpectedAMetaclassObject.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MethodExpectsFewerArgs" : {
          "file" : "lib/Moose/Exception/MethodExpectsFewerArgs.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MethodExpectsMoreArgs" : {
          "file" : "lib/Moose/Exception/MethodExpectsMoreArgs.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MethodModifierNeedsMethodName" : {
          "file" : "lib/Moose/Exception/MethodModifierNeedsMethodName.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MethodNameConflictInRoles" : {
          "file" : "lib/Moose/Exception/MethodNameConflictInRoles.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MethodNameNotFoundInInheritanceHierarchy" : {
          "file" : "lib/Moose/Exception/MethodNameNotFoundInInheritanceHierarchy.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MethodNameNotGiven" : {
          "file" : "lib/Moose/Exception/MethodNameNotGiven.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MustDefineAMethodName" : {
          "file" : "lib/Moose/Exception/MustDefineAMethodName.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MustDefineAnAttributeName" : {
          "file" : "lib/Moose/Exception/MustDefineAnAttributeName.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MustHaveAtLeastOneValueToEnumerate" : {
          "file" : "lib/Moose/Exception/MustHaveAtLeastOneValueToEnumerate.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MustPassAHashOfOptions" : {
          "file" : "lib/Moose/Exception/MustPassAHashOfOptions.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MustPassAMooseMetaRoleInstanceOrSubclass" : {
          "file" : "lib/Moose/Exception/MustPassAMooseMetaRoleInstanceOrSubclass.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MustPassAPackageNameOrAnExistingClassMOPPackageInstance" : {
          "file" : "lib/Moose/Exception/MustPassAPackageNameOrAnExistingClassMOPPackageInstance.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MustPassEvenNumberOfArguments" : {
          "file" : "lib/Moose/Exception/MustPassEvenNumberOfArguments.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MustPassEvenNumberOfAttributeOptions" : {
          "file" : "lib/Moose/Exception/MustPassEvenNumberOfAttributeOptions.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MustProvideANameForTheAttribute" : {
          "file" : "lib/Moose/Exception/MustProvideANameForTheAttribute.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MustSpecifyAtleastOneMethod" : {
          "file" : "lib/Moose/Exception/MustSpecifyAtleastOneMethod.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MustSpecifyAtleastOneRole" : {
          "file" : "lib/Moose/Exception/MustSpecifyAtleastOneRole.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MustSpecifyAtleastOneRoleToApplicant" : {
          "file" : "lib/Moose/Exception/MustSpecifyAtleastOneRoleToApplicant.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MustSupplyAClassMOPAttributeInstance" : {
          "file" : "lib/Moose/Exception/MustSupplyAClassMOPAttributeInstance.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MustSupplyADelegateToMethod" : {
          "file" : "lib/Moose/Exception/MustSupplyADelegateToMethod.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MustSupplyAMetaclass" : {
          "file" : "lib/Moose/Exception/MustSupplyAMetaclass.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MustSupplyAMooseMetaAttributeInstance" : {
          "file" : "lib/Moose/Exception/MustSupplyAMooseMetaAttributeInstance.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MustSupplyAnAccessorTypeToConstructWith" : {
          "file" : "lib/Moose/Exception/MustSupplyAnAccessorTypeToConstructWith.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MustSupplyAnAttributeToConstructWith" : {
          "file" : "lib/Moose/Exception/MustSupplyAnAttributeToConstructWith.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MustSupplyArrayRefAsCurriedArguments" : {
          "file" : "lib/Moose/Exception/MustSupplyArrayRefAsCurriedArguments.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::MustSupplyPackageNameAndName" : {
          "file" : "lib/Moose/Exception/MustSupplyPackageNameAndName.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::NeedsTypeConstraintUnionForTypeCoercionUnion" : {
          "file" : "lib/Moose/Exception/NeedsTypeConstraintUnionForTypeCoercionUnion.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::NeitherAttributeNorAttributeNameIsGiven" : {
          "file" : "lib/Moose/Exception/NeitherAttributeNorAttributeNameIsGiven.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::NeitherClassNorClassNameIsGiven" : {
          "file" : "lib/Moose/Exception/NeitherClassNorClassNameIsGiven.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::NeitherRoleNorRoleNameIsGiven" : {
          "file" : "lib/Moose/Exception/NeitherRoleNorRoleNameIsGiven.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::NeitherTypeNorTypeNameIsGiven" : {
          "file" : "lib/Moose/Exception/NeitherTypeNorTypeNameIsGiven.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::NoAttributeFoundInSuperClass" : {
          "file" : "lib/Moose/Exception/NoAttributeFoundInSuperClass.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::NoBodyToInitializeInAnAbstractBaseClass" : {
          "file" : "lib/Moose/Exception/NoBodyToInitializeInAnAbstractBaseClass.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::NoCasesMatched" : {
          "file" : "lib/Moose/Exception/NoCasesMatched.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::NoConstraintCheckForTypeConstraint" : {
          "file" : "lib/Moose/Exception/NoConstraintCheckForTypeConstraint.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::NoDestructorClassSpecified" : {
          "file" : "lib/Moose/Exception/NoDestructorClassSpecified.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::NoImmutableTraitSpecifiedForClass" : {
          "file" : "lib/Moose/Exception/NoImmutableTraitSpecifiedForClass.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::NoParentGivenToSubtype" : {
          "file" : "lib/Moose/Exception/NoParentGivenToSubtype.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::OnlyInstancesCanBeCloned" : {
          "file" : "lib/Moose/Exception/OnlyInstancesCanBeCloned.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::OperatorIsRequired" : {
          "file" : "lib/Moose/Exception/OperatorIsRequired.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::OverrideConflictInComposition" : {
          "file" : "lib/Moose/Exception/OverrideConflictInComposition.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::OverrideConflictInSummation" : {
          "file" : "lib/Moose/Exception/OverrideConflictInSummation.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::PackageDoesNotUseMooseExporter" : {
          "file" : "lib/Moose/Exception/PackageDoesNotUseMooseExporter.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::PackageNameAndNameParamsNotGivenToWrap" : {
          "file" : "lib/Moose/Exception/PackageNameAndNameParamsNotGivenToWrap.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::PackagesAndModulesAreNotCachable" : {
          "file" : "lib/Moose/Exception/PackagesAndModulesAreNotCachable.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::ParameterIsNotSubtypeOfParent" : {
          "file" : "lib/Moose/Exception/ParameterIsNotSubtypeOfParent.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::ReferencesAreNotAllowedAsDefault" : {
          "file" : "lib/Moose/Exception/ReferencesAreNotAllowedAsDefault.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::RequiredAttributeLacksInitialization" : {
          "file" : "lib/Moose/Exception/RequiredAttributeLacksInitialization.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::RequiredAttributeNeedsADefault" : {
          "file" : "lib/Moose/Exception/RequiredAttributeNeedsADefault.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::RequiredMethodsImportedByClass" : {
          "file" : "lib/Moose/Exception/RequiredMethodsImportedByClass.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::RequiredMethodsNotImplementedByClass" : {
          "file" : "lib/Moose/Exception/RequiredMethodsNotImplementedByClass.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::Role::Attribute" : {
          "file" : "lib/Moose/Exception/Role/Attribute.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::Role::AttributeName" : {
          "file" : "lib/Moose/Exception/Role/AttributeName.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::Role::Class" : {
          "file" : "lib/Moose/Exception/Role/Class.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::Role::EitherAttributeOrAttributeName" : {
          "file" : "lib/Moose/Exception/Role/EitherAttributeOrAttributeName.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::Role::Instance" : {
          "file" : "lib/Moose/Exception/Role/Instance.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
+      },
+      "Moose::Exception::Role::InstanceClass" : {
+         "file" : "lib/Moose/Exception/Role/InstanceClass.pm",
+         "version" : "2.1213"
       },
       "Moose::Exception::Role::InvalidAttributeOptions" : {
          "file" : "lib/Moose/Exception/Role/InvalidAttributeOptions.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::Role::Method" : {
          "file" : "lib/Moose/Exception/Role/Method.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::Role::ParamsHash" : {
          "file" : "lib/Moose/Exception/Role/ParamsHash.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::Role::Role" : {
          "file" : "lib/Moose/Exception/Role/Role.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::Role::RoleForCreate" : {
          "file" : "lib/Moose/Exception/Role/RoleForCreate.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::Role::RoleForCreateMOPClass" : {
          "file" : "lib/Moose/Exception/Role/RoleForCreateMOPClass.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::Role::TypeConstraint" : {
          "file" : "lib/Moose/Exception/Role/TypeConstraint.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::RoleDoesTheExcludedRole" : {
          "file" : "lib/Moose/Exception/RoleDoesTheExcludedRole.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::RoleExclusionConflict" : {
          "file" : "lib/Moose/Exception/RoleExclusionConflict.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::RoleNameRequired" : {
          "file" : "lib/Moose/Exception/RoleNameRequired.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "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.1213"
       },
       "Moose::Exception::RolesDoNotSupportAugment" : {
          "file" : "lib/Moose/Exception/RolesDoNotSupportAugment.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::RolesDoNotSupportExtends" : {
          "file" : "lib/Moose/Exception/RolesDoNotSupportExtends.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::RolesDoNotSupportInner" : {
          "file" : "lib/Moose/Exception/RolesDoNotSupportInner.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::RolesDoNotSupportRegexReferencesForMethodModifiers" : {
          "file" : "lib/Moose/Exception/RolesDoNotSupportRegexReferencesForMethodModifiers.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::RolesInCreateTakesAnArrayRef" : {
          "file" : "lib/Moose/Exception/RolesInCreateTakesAnArrayRef.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::RolesListMustBeInstancesOfMooseMetaRole" : {
          "file" : "lib/Moose/Exception/RolesListMustBeInstancesOfMooseMetaRole.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::SingleParamsToNewMustBeHashRef" : {
          "file" : "lib/Moose/Exception/SingleParamsToNewMustBeHashRef.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::TriggerMustBeACodeRef" : {
          "file" : "lib/Moose/Exception/TriggerMustBeACodeRef.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::TypeConstraintCannotBeUsedForAParameterizableType" : {
          "file" : "lib/Moose/Exception/TypeConstraintCannotBeUsedForAParameterizableType.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "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.1213"
       },
       "Moose::Exception::TypeParameterMustBeMooseMetaType" : {
          "file" : "lib/Moose/Exception/TypeParameterMustBeMooseMetaType.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::UnableToCanonicalizeHandles" : {
          "file" : "lib/Moose/Exception/UnableToCanonicalizeHandles.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::UnableToCanonicalizeNonRolePackage" : {
          "file" : "lib/Moose/Exception/UnableToCanonicalizeNonRolePackage.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::UnableToRecognizeDelegateMetaclass" : {
          "file" : "lib/Moose/Exception/UnableToRecognizeDelegateMetaclass.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::UndefinedHashKeysPassedToMethod" : {
          "file" : "lib/Moose/Exception/UndefinedHashKeysPassedToMethod.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::UnionCalledWithAnArrayRefAndAdditionalArgs" : {
          "file" : "lib/Moose/Exception/UnionCalledWithAnArrayRefAndAdditionalArgs.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::UnionTakesAtleastTwoTypeNames" : {
          "file" : "lib/Moose/Exception/UnionTakesAtleastTwoTypeNames.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::ValidationFailedForInlineTypeConstraint" : {
          "file" : "lib/Moose/Exception/ValidationFailedForInlineTypeConstraint.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::ValidationFailedForTypeConstraint" : {
          "file" : "lib/Moose/Exception/ValidationFailedForTypeConstraint.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::WrapTakesACodeRefToBless" : {
          "file" : "lib/Moose/Exception/WrapTakesACodeRefToBless.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exception::WrongTypeConstraintGiven" : {
          "file" : "lib/Moose/Exception/WrongTypeConstraintGiven.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Exporter" : {
          "file" : "lib/Moose/Exporter.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Intro" : {
          "file" : "lib/Moose/Intro.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Manual" : {
          "file" : "lib/Moose/Manual.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Manual::Attributes" : {
          "file" : "lib/Moose/Manual/Attributes.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Manual::BestPractices" : {
          "file" : "lib/Moose/Manual/BestPractices.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Manual::Classes" : {
          "file" : "lib/Moose/Manual/Classes.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Manual::Concepts" : {
          "file" : "lib/Moose/Manual/Concepts.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Manual::Construction" : {
          "file" : "lib/Moose/Manual/Construction.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Manual::Contributing" : {
          "file" : "lib/Moose/Manual/Contributing.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Manual::Delegation" : {
          "file" : "lib/Moose/Manual/Delegation.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Manual::Delta" : {
          "file" : "lib/Moose/Manual/Delta.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Manual::Exceptions" : {
          "file" : "lib/Moose/Manual/Exceptions.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Manual::Exceptions::Manifest" : {
          "file" : "lib/Moose/Manual/Exceptions/Manifest.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Manual::FAQ" : {
          "file" : "lib/Moose/Manual/FAQ.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Manual::MOP" : {
          "file" : "lib/Moose/Manual/MOP.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Manual::MethodModifiers" : {
          "file" : "lib/Moose/Manual/MethodModifiers.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Manual::MooseX" : {
          "file" : "lib/Moose/Manual/MooseX.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Manual::Roles" : {
          "file" : "lib/Moose/Manual/Roles.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Manual::Support" : {
          "file" : "lib/Moose/Manual/Support.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Manual::Types" : {
          "file" : "lib/Moose/Manual/Types.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Manual::Unsweetened" : {
          "file" : "lib/Moose/Manual/Unsweetened.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::Attribute" : {
          "file" : "lib/Moose/Meta/Attribute.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::Attribute::Custom::Moose" : {
          "file" : "lib/Moose/Meta/Attribute.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::Attribute::Native" : {
          "file" : "lib/Moose/Meta/Attribute/Native.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::Attribute::Native::Trait::Array" : {
          "file" : "lib/Moose/Meta/Attribute/Native/Trait/Array.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::Attribute::Native::Trait::Bool" : {
          "file" : "lib/Moose/Meta/Attribute/Native/Trait/Bool.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::Attribute::Native::Trait::Code" : {
          "file" : "lib/Moose/Meta/Attribute/Native/Trait/Code.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::Attribute::Native::Trait::Counter" : {
          "file" : "lib/Moose/Meta/Attribute/Native/Trait/Counter.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::Attribute::Native::Trait::Hash" : {
          "file" : "lib/Moose/Meta/Attribute/Native/Trait/Hash.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::Attribute::Native::Trait::Number" : {
          "file" : "lib/Moose/Meta/Attribute/Native/Trait/Number.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::Attribute::Native::Trait::String" : {
          "file" : "lib/Moose/Meta/Attribute/Native/Trait/String.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::Class" : {
          "file" : "lib/Moose/Meta/Class.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::Instance" : {
          "file" : "lib/Moose/Meta/Instance.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::Method" : {
          "file" : "lib/Moose/Meta/Method.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::Method::Accessor" : {
          "file" : "lib/Moose/Meta/Method/Accessor.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::Method::Augmented" : {
          "file" : "lib/Moose/Meta/Method/Augmented.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::Method::Constructor" : {
          "file" : "lib/Moose/Meta/Method/Constructor.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::Method::Delegation" : {
          "file" : "lib/Moose/Meta/Method/Delegation.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::Method::Destructor" : {
          "file" : "lib/Moose/Meta/Method/Destructor.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::Method::Meta" : {
          "file" : "lib/Moose/Meta/Method/Meta.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::Method::Overridden" : {
          "file" : "lib/Moose/Meta/Method/Overridden.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::Role" : {
          "file" : "lib/Moose/Meta/Role.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::Role::Application" : {
          "file" : "lib/Moose/Meta/Role/Application.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::Role::Application::RoleSummation" : {
          "file" : "lib/Moose/Meta/Role/Application/RoleSummation.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::Role::Application::ToClass" : {
          "file" : "lib/Moose/Meta/Role/Application/ToClass.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::Role::Application::ToInstance" : {
          "file" : "lib/Moose/Meta/Role/Application/ToInstance.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::Role::Application::ToRole" : {
          "file" : "lib/Moose/Meta/Role/Application/ToRole.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::Role::Attribute" : {
          "file" : "lib/Moose/Meta/Role/Attribute.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::Role::Composite" : {
          "file" : "lib/Moose/Meta/Role/Composite.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::Role::Method" : {
          "file" : "lib/Moose/Meta/Role/Method.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::Role::Method::Conflicting" : {
          "file" : "lib/Moose/Meta/Role/Method/Conflicting.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::Role::Method::Required" : {
          "file" : "lib/Moose/Meta/Role/Method/Required.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::TypeCoercion" : {
          "file" : "lib/Moose/Meta/TypeCoercion.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::TypeCoercion::Union" : {
          "file" : "lib/Moose/Meta/TypeCoercion/Union.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::TypeConstraint" : {
          "file" : "lib/Moose/Meta/TypeConstraint.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::TypeConstraint::Class" : {
          "file" : "lib/Moose/Meta/TypeConstraint/Class.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::TypeConstraint::DuckType" : {
          "file" : "lib/Moose/Meta/TypeConstraint/DuckType.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::TypeConstraint::Enum" : {
          "file" : "lib/Moose/Meta/TypeConstraint/Enum.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::TypeConstraint::Parameterizable" : {
          "file" : "lib/Moose/Meta/TypeConstraint/Parameterizable.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::TypeConstraint::Parameterized" : {
          "file" : "lib/Moose/Meta/TypeConstraint/Parameterized.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::TypeConstraint::Registry" : {
          "file" : "lib/Moose/Meta/TypeConstraint/Registry.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::TypeConstraint::Role" : {
          "file" : "lib/Moose/Meta/TypeConstraint/Role.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Meta::TypeConstraint::Union" : {
          "file" : "lib/Moose/Meta/TypeConstraint/Union.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Object" : {
          "file" : "lib/Moose/Object.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Role" : {
          "file" : "lib/Moose/Role.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Spec::Role" : {
          "file" : "lib/Moose/Spec/Role.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Unsweetened" : {
          "file" : "lib/Moose/Unsweetened.pod",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Util" : {
          "file" : "lib/Moose/Util.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Util::MetaRole" : {
          "file" : "lib/Moose/Util/MetaRole.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Moose::Util::TypeConstraints" : {
          "file" : "lib/Moose/Util/TypeConstraints.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "Test::Moose" : {
          "file" : "lib/Test/Moose.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "metaclass" : {
          "file" : "lib/metaclass.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       },
       "oose" : {
          "file" : "lib/oose.pm",
-         "version" : "2.1204"
+         "version" : "2.1213"
       }
    },
    "release_status" : "stable",
@@ -1569,16 +1577,16 @@
       "x_IRC" : "irc://irc.perl.org/#moose",
       "x_MailingList" : "http://lists.perl.org/list/moose.html"
    },
-   "version" : "2.1204",
+   "version" : "2.1213",
    "x_Dist_Zilla" : {
       "perl" : {
-         "version" : "5.019007"
+         "version" : "5.021003"
       },
       "plugins" : [
          {
-            "class" : "inc::RequireAuthorDeps",
-            "name" : "=inc::RequireAuthorDeps",
-            "version" : null
+            "class" : "Dist::Zilla::Plugin::EnsurePrereqsInstalled",
+            "name" : "EnsurePrereqsInstalled",
+            "version" : "0.005"
          },
          {
             "class" : "inc::Clean",
@@ -1588,105 +1596,110 @@
          {
             "class" : "Dist::Zilla::Plugin::GatherDir",
             "name" : "GatherDir",
-            "version" : "5.012"
+            "version" : "5.020"
          },
          {
             "class" : "Dist::Zilla::Plugin::PruneCruft",
             "name" : "PruneCruft",
-            "version" : "5.012"
+            "version" : "5.020"
          },
          {
             "class" : "Dist::Zilla::Plugin::ManifestSkip",
             "name" : "ManifestSkip",
-            "version" : "5.012"
+            "version" : "5.020"
          },
          {
             "class" : "Dist::Zilla::Plugin::MetaYAML",
             "name" : "MetaYAML",
-            "version" : "5.012"
+            "version" : "5.020"
          },
          {
             "class" : "Dist::Zilla::Plugin::MetaJSON",
             "name" : "MetaJSON",
-            "version" : "5.012"
+            "version" : "5.020"
          },
          {
             "class" : "Dist::Zilla::Plugin::License",
             "name" : "License",
-            "version" : "5.012"
+            "version" : "5.020"
          },
          {
             "class" : "Dist::Zilla::Plugin::ExecDir",
             "name" : "ExecDir",
-            "version" : "5.012"
+            "version" : "5.020"
          },
          {
             "class" : "Dist::Zilla::Plugin::ShareDir",
             "name" : "ShareDir",
-            "version" : "5.012"
+            "version" : "5.020"
          },
          {
             "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.020"
          },
          {
             "class" : "Dist::Zilla::Plugin::NextRelease",
             "name" : "NextRelease",
-            "version" : "5.012"
-         },
-         {
-            "class" : "Dist::Zilla::Plugin::PruneFiles",
-            "name" : "PruneFiles",
-            "version" : "5.012"
+            "version" : "5.020"
          },
          {
             "class" : "Dist::Zilla::Plugin::PkgVersion",
             "name" : "PkgVersion",
-            "version" : "5.012"
+            "version" : "5.020"
          },
          {
             "class" : "Dist::Zilla::Plugin::MetaConfig",
             "name" : "MetaConfig",
-            "version" : "5.012"
+            "version" : "5.020"
          },
          {
-            "class" : "Dist::Zilla::Plugin::Authority",
-            "name" : "Authority",
-            "version" : "1.006"
+            "class" : "inc::SimpleAuthority",
+            "name" : "=inc::SimpleAuthority",
+            "version" : null
          },
          {
             "class" : "Dist::Zilla::Plugin::MetaResources",
             "name" : "MetaResources",
-            "version" : "5.012"
+            "version" : "5.020"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FileFinder::ByName",
+            "name" : "PodModules",
+            "version" : "5.020"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FileFinder::Filter",
+            "name" : "ModulesSansPod",
+            "version" : "5.020"
+         },
+         {
+            "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.020"
                      }
                   ]
                },
@@ -1697,12 +1710,12 @@
                }
             },
             "name" : "MetaProvides::Package",
-            "version" : "2.000001"
+            "version" : "2.001002"
          },
          {
             "class" : "Dist::Zilla::Plugin::MetaNoIndex",
             "name" : "MetaNoIndex",
-            "version" : "5.012"
+            "version" : "5.020"
          },
          {
             "class" : "Dist::Zilla::Plugin::SurgicalPodWeaver",
@@ -1816,7 +1829,7 @@
                }
             },
             "name" : "PromptIfStale",
-            "version" : "0.015"
+            "version" : "0.027"
          },
          {
             "class" : "Dist::Zilla::Plugin::EOLTests",
@@ -1826,47 +1839,60 @@
          {
             "class" : "Dist::Zilla::Plugin::PodSyntaxTests",
             "name" : "PodSyntaxTests",
-            "version" : "5.012"
+            "version" : "5.020"
          },
          {
             "class" : "Dist::Zilla::Plugin::Test::NoTabs",
             "config" : {
                "Dist::Zilla::Plugin::Test::NoTabs" : {
-                  "module_finder" : [
-                     ":InstallModules"
-                  ],
-                  "script_finder" : [
-                     ":ExecFiles"
+                  "filename" : "xt/author/no-tabs.t",
+                  "finder" : [
+                     ":InstallModules",
+                     ":ExecFiles",
+                     ":TestFiles"
                   ]
                }
             },
             "name" : "Test::NoTabs",
-            "version" : "0.06"
+            "version" : "0.09"
          },
          {
             "class" : "Dist::Zilla::Plugin::MetaTests",
             "name" : "MetaTests",
-            "version" : "5.012"
+            "version" : "5.020"
          },
          {
             "class" : "Dist::Zilla::Plugin::Test::Kwalitee",
+            "config" : {
+               "Dist::Zilla::Plugin::Test::Kwalitee" : {
+                  "filename" : "xt/release/kwalitee.t",
+                  "skiptest" : [
+                     "use_strict"
+                  ]
+               }
+            },
             "name" : "Test::Kwalitee",
-            "version" : "2.07"
+            "version" : "2.11"
          },
          {
             "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.022"
          },
          {
             "class" : "Dist::Zilla::Plugin::Test::ReportPrereqs",
             "name" : "Test::ReportPrereqs",
-            "version" : "0.013"
+            "version" : "0.019"
          },
          {
             "class" : "Dist::Zilla::Plugin::Test::CPAN::Changes",
@@ -1877,17 +1903,54 @@
             "class" : "Dist::Zilla::Plugin::Test::Compile",
             "config" : {
                "Dist::Zilla::Plugin::Test::Compile" : {
-                  "filename" : "xt/author/00-compile.t",
+                  "bail_out_on_fail" : "1",
+                  "fail_on_warning" : "author",
+                  "fake_home" : "0",
+                  "filename" : "xt/release/00-compile.t",
                   "module_finder" : [
                      ":InstallModules"
                   ],
+                  "needs_display" : "0",
+                  "phase" : "develop",
                   "script_finder" : [
                      ":ExecFiles"
+                  ],
+                  "skips" : [
+                     "^Class::MOP::Attribute$",
+                     "^Class::MOP::Class$",
+                     "^Class::MOP::Method::Accessor$",
+                     "^Class::MOP::Method::Constructor$",
+                     "^Class::MOP::Method::Inlined$",
+                     "^Class::MOP::Method::Wrapped$",
+                     "^Class::MOP::Mixin::HasAttributes$",
+                     "^Class::MOP::Module$",
+                     "^Class::MOP::Package$",
+                     "^Moose::Meta::Attribute$",
+                     "^Moose::Meta::Attribute::Native$",
+                     "^Moose::Meta::Mixin::AttributeCore$",
+                     "^Moose::Meta::Role::Attribute$",
+                     "^Moose::Meta::TypeConstraint::Class$",
+                     "^Moose::Meta::TypeConstraint::DuckType$",
+                     "^Moose::Meta::TypeConstraint::Enum$",
+                     "^Moose::Meta::TypeConstraint::Parameterizable$",
+                     "^Moose::Meta::TypeConstraint::Parameterized$",
+                     "^Moose::Meta::TypeConstraint::Role$",
+                     "^Moose::Meta::TypeConstraint::Union$"
                   ]
                }
             },
             "name" : "Test::Compile",
-            "version" : "2.039"
+            "version" : "2.046"
+         },
+         {
+            "class" : "inc::CheckReleaseType",
+            "name" : "=inc::CheckReleaseType",
+            "version" : null
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::CheckVersionIncrement",
+            "name" : "CheckVersionIncrement",
+            "version" : "0.121750"
          },
          {
             "class" : "Dist::Zilla::Plugin::CheckChangesHasContent",
@@ -1903,7 +1966,7 @@
                }
             },
             "name" : "Prereqs",
-            "version" : "5.012"
+            "version" : "5.020"
          },
          {
             "class" : "Dist::Zilla::Plugin::Prereqs",
@@ -1914,7 +1977,7 @@
                }
             },
             "name" : "TestRequires",
-            "version" : "5.012"
+            "version" : "5.020"
          },
          {
             "class" : "Dist::Zilla::Plugin::Prereqs",
@@ -1925,12 +1988,12 @@
                }
             },
             "name" : "ConfigureRequires",
-            "version" : "5.012"
+            "version" : "5.020"
          },
          {
             "class" : "Dist::Zilla::Plugin::Prereqs::AuthorDeps",
             "name" : "Prereqs::AuthorDeps",
-            "version" : "0.002"
+            "version" : "0.003"
          },
          {
             "class" : "Dist::Zilla::Plugin::Prereqs",
@@ -1941,7 +2004,7 @@
                }
             },
             "name" : "DevelopRequires",
-            "version" : "5.012"
+            "version" : "5.020"
          },
          {
             "class" : "Dist::Zilla::Plugin::Prereqs",
@@ -1952,23 +2015,22 @@
                }
             },
             "name" : "RuntimeRecommends",
-            "version" : "5.012"
+            "version" : "5.020"
          },
          {
-            "class" : "Dist::Zilla::Plugin::Prereqs",
+            "class" : "Dist::Zilla::Plugin::Conflicts",
+            "name" : "Conflicts",
+            "version" : "0.16"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Test::CheckBreaks",
             "config" : {
-               "Dist::Zilla::Plugin::Prereqs" : {
-                  "phase" : "develop",
-                  "type" : "conflicts"
+               "Dist::Zilla::Plugin::Test::CheckBreaks" : {
+                  "conflicts_module" : "Moose::Conflicts"
                }
             },
-            "name" : "DevelopConflicts",
-            "version" : "5.012"
-         },
-         {
-            "class" : "Dist::Zilla::Plugin::Conflicts",
-            "name" : "Conflicts",
-            "version" : "0.13"
+            "name" : "Test::CheckBreaks",
+            "version" : "0.011"
          },
          {
             "class" : "inc::CheckDelta",
@@ -1983,42 +2045,119 @@
          {
             "class" : "Dist::Zilla::Plugin::Git::Remote::Check",
             "name" : "Git::Remote::Check",
-            "version" : "0.2.0"
+            "version" : "0.1.2"
          },
          {
             "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.024"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::TestRelease",
+            "name" : "TestRelease",
+            "version" : "5.020"
          },
          {
             "class" : "Dist::Zilla::Plugin::ConfirmRelease",
             "name" : "ConfirmRelease",
-            "version" : "5.012"
+            "version" : "5.020"
          },
          {
             "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.024"
          },
          {
             "class" : "Dist::Zilla::Plugin::Git::Tag",
+            "config" : {
+               "Dist::Zilla::Plugin::Git::Tag" : {
+                  "branch" : null,
+                  "signed" : 0,
+                  "tag" : "2.1213",
+                  "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.024"
          },
          {
             "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.024"
          },
          {
-            "class" : "Dist::Zilla::Plugin::ContributorsFromGit",
-            "name" : "ContributorsFromGit",
-            "version" : "0.006"
+            "class" : "Dist::Zilla::Plugin::UploadToCPAN",
+            "name" : "UploadToCPAN",
+            "version" : "5.020"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Git::Contributors",
+            "config" : {
+               "Dist::Zilla::Plugin::Git::Contributors" : {
+                  "include_authors" : "0",
+                  "include_releaser" : "1",
+                  "order_by" : "name",
+                  "paths" : []
+               }
+            },
+            "name" : "Git::Contributors",
+            "version" : "0.007"
          },
          {
             "class" : "inc::GenerateDocs",
@@ -2028,42 +2167,42 @@
          {
             "class" : "Dist::Zilla::Plugin::FinderCode",
             "name" : ":InstallModules",
-            "version" : "5.012"
+            "version" : "5.020"
          },
          {
             "class" : "Dist::Zilla::Plugin::FinderCode",
             "name" : ":IncModules",
-            "version" : "5.012"
+            "version" : "5.020"
          },
          {
             "class" : "Dist::Zilla::Plugin::FinderCode",
             "name" : ":TestFiles",
-            "version" : "5.012"
+            "version" : "5.020"
          },
          {
             "class" : "Dist::Zilla::Plugin::FinderCode",
             "name" : ":ExecFiles",
-            "version" : "5.012"
+            "version" : "5.020"
          },
          {
             "class" : "Dist::Zilla::Plugin::FinderCode",
             "name" : ":ShareFiles",
-            "version" : "5.012"
+            "version" : "5.020"
          },
          {
             "class" : "Dist::Zilla::Plugin::FinderCode",
             "name" : ":MainModule",
-            "version" : "5.012"
+            "version" : "5.020"
          },
          {
             "class" : "Dist::Zilla::Plugin::FinderCode",
             "name" : ":AllFiles",
-            "version" : "5.012"
+            "version" : "5.020"
          },
          {
             "class" : "Dist::Zilla::Plugin::FinderCode",
             "name" : ":NoFiles",
-            "version" : "5.012"
+            "version" : "5.020"
          }
       ],
       "zilla" : {
@@ -2071,96 +2210,101 @@
          "config" : {
             "is_trial" : "0"
          },
-         "version" : "5.012"
+         "version" : "5.020"
       }
    },
    "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>",
       "Adam J. Foxson <fhoxh@pobox.com>",
       "Adam Kennedy <adamk@cpan.org>",
+      "Ævar Arnfjörð Bjarmason <avarab@gmail.com>",
       "Anders Nor Berle <berle@cpan.org>",
       "Ansgar Burchardt <ansgar@43-1.org>",
       "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>",
       "Christian Hansen <chansen@cpan.org>",
       "Christopher J. Madsen <perl@cjmweb.net>",
+      "Chris Weyl <cweyl@alumni.drew.edu>",
+      "chromatic <chromatic@wgz.org>",
       "Cory Watson <github@onemogin.com>",
       "Curtis Jewell <perl@csjewell.fastmail.us>",
+      "Dagfinn Ilmari Mannsåker <ilmari@ilmari.org>",
       "Daisuke Maki (lestrrat) <daisuke@endeworks.jp>",
       "Dan Dascalescu <ddascaNOSPAMlescu@gmail.com>",
       "Dann <techmemo@gmail.com>",
@@ -2170,18 +2314,23 @@
       "Dylan William Hardison <dylan@hardison.net>",
       "Eric Wilhelm <ewilhelm@cpan.org>",
       "Evan Carroll <evan@dealermade.com>",
+      "franck cuny <franck@lumberjaph.net>",
       "Frew Schmidt <frioux@gmail.com>",
       "Gerda Shank <gerda.shank@gmail.com>",
+      "gfx <gfuji@cpan.org>",
       "Graham Knop <haarg@haarg.org>",
+      "gregor herrmann <gregoa@debian.org>",
       "Guillermo Roditi <groditi@gmail.com>",
+      "hakim <hakim.cassimally@gmail.com>",
       "Henry Van Styn <vanstyn@intellitree.com>",
       "Jason May <jason.a.may@gmail.com>",
       "Jay Allen <jay@endevver.com>",
       "Jay Hannah <jay@jays.net>",
       "Jay Kuri <jayk@jay-kuris-macbook.local>",
       "Jeff Bisbee <jbisbee@biz.(none)>",
-      "Jess Robinson <cpan@desert-island.me.uk>",
       "Jesse Vincent <jesse@bestpractical.com>",
+      "Jess Robinson <cpan@desert-island.me.uk>",
+      "joel <joel@fysh.org>",
       "John Douglas Porter <jdporter@cpan.org>",
       "John Goulah <jgoulah@cpan.org>",
       "John Napiorkowski <jjnapiork@cpan.org>",
@@ -2189,63 +2338,60 @@
       "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>",
+      "Marcel Grünauer <hanekomu@gmail.com>",
       "Marc Mims <marc@questright.com>",
-      "Marcel Gr\u00fcnauer <hanekomu@gmail.com>",
       "Marcus Ramberg <marcus@nordaaker.com>",
-      "Mark A. Stratman <stratman@gmail.com>",
       "Mark Allen <mrallen1@yahoo.com>",
+      "Mark A. Stratman <stratman@gmail.com>",
       "Mateu X Hunter <hunter@missoula.org>",
-      "Matt Kraai <kraai@ftbfs.org>",
       "Matthew Horsfall <wolfsage@gmail.com>",
+      "matthof <rmhofmann@gmail.com>",
+      "Matt Kraai <kraai@ftbfs.org>",
+      "michaelr <michaelr@michaelr-laptop.(none)>",
+      "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>",
+      "nperez <nperez@cpan.org>",
       "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>",
+      "Philippe Bruhat (BooK) <book@cpan.org>",
       "Phillip Smith <ps@phillipadsmith.com>",
       "Piotr Roszatycki <piotr.roszatycki@gmail.com>",
+      "pktm <pktm@users.noreply.github.com>",
       "Rafael Kitover <rkitover@cpan.org>",
       "Ricardo Signes <rjbs@cpan.org>",
-      "Robert 'phaylon' Sedlacek <rs@474.at>",
       "Robert Boone <robo4288@gmail.com>",
       "Robert Buels <rmb32@cornell.edu>",
+      "Robert 'phaylon' Sedlacek <rs@474.at>",
       "Robin V <robinsp-gmail-com@nospam.com>",
+      "rodrigolive <rodrigolive@gmail.com>",
       "Sam Vilain <sam.vilain@catalyst.net.nz>",
       "Scott McWhirter <konobi@cpan.org>",
+      "shelling <navyblueshellingford@gmail.com>",
       "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>",
       "Tuomas Jormola <tj@solitudo.net>",
       "Upasana Shukla <me@upasana.me>",
       "Wallace Reis <reis.wallace@gmail.com>",
-      "Zachary Lome <zachary.lome@baml.com>",
-      "Zoffix Znet <cpan@zoffix.com>",
-      "chromatic <chromatic@wgz.org>",
-      "franck cuny <franck@lumberjaph.net>",
-      "gfx <gfuji@cpan.org>",
-      "gregor herrmann <gregoa@debian.org>",
-      "hakim <hakim.cassimally@gmail.com>",
-      "joel <joel@fysh.org>",
-      "matthof <rmhofmann@gmail.com>",
-      "michaelr <michaelr@michaelr-laptop.(none)>",
-      "nperez <nperez@cpan.org>",
-      "rodrigolive <rodrigolive@gmail.com>",
-      "shelling <navyblueshellingford@gmail.com>",
       "wickline <m-s-w-github@wickline.org>",
-      "\u00c6var Arnfj\u00f6r\u00f0 Bjarmason <avarab@gmail.com>"
+      "Zachary Lome <zachary.lome@baml.com>",
+      "Zoffix Znet <cpan@zoffix.com>"
    ]
 }
 
@@ -12,16 +12,21 @@ author:
   - 'Chris Prather <chris@prather.org>'
   - 'Matt S Trout <mst@shadowcat.co.uk>'
 build_requires:
+  CPAN::Meta::Check: '0.007'
+  CPAN::Meta::Requirements: '0'
+  ExtUtils::MakeMaker: '0'
+  File::Spec: '0'
+  Test::CleanNamespaces: '0.13'
   Test::Fatal: '0.001'
   Test::More: '0.88'
   Test::Requires: '0.05'
 configure_requires:
   Dist::CheckConflicts: '0.02'
   ExtUtils::CBuilder: '0.27'
-  ExtUtils::MakeMaker: '6.30'
+  ExtUtils::MakeMaker: '0'
   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.020, CPAN::Meta::Converter version 2.142060'
 license: perl
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -50,1021 +55,1018 @@ no_index:
 provides:
   Class::MOP:
     file: lib/Class/MOP.pm
-    version: '2.1204'
+    version: '2.1213'
   Class::MOP::Attribute:
     file: lib/Class/MOP/Attribute.pm
-    version: '2.1204'
+    version: '2.1213'
   Class::MOP::Class:
     file: lib/Class/MOP/Class.pm
-    version: '2.1204'
+    version: '2.1213'
   Class::MOP::Instance:
     file: lib/Class/MOP/Instance.pm
-    version: '2.1204'
+    version: '2.1213'
   Class::MOP::Method:
     file: lib/Class/MOP/Method.pm
-    version: '2.1204'
+    version: '2.1213'
   Class::MOP::Method::Accessor:
     file: lib/Class/MOP/Method/Accessor.pm
-    version: '2.1204'
+    version: '2.1213'
   Class::MOP::Method::Constructor:
     file: lib/Class/MOP/Method/Constructor.pm
-    version: '2.1204'
+    version: '2.1213'
   Class::MOP::Method::Generated:
     file: lib/Class/MOP/Method/Generated.pm
-    version: '2.1204'
+    version: '2.1213'
   Class::MOP::Method::Inlined:
     file: lib/Class/MOP/Method/Inlined.pm
-    version: '2.1204'
+    version: '2.1213'
   Class::MOP::Method::Meta:
     file: lib/Class/MOP/Method/Meta.pm
-    version: '2.1204'
+    version: '2.1213'
   Class::MOP::Method::Overload:
     file: lib/Class/MOP/Method/Overload.pm
-    version: '2.1204'
+    version: '2.1213'
   Class::MOP::Method::Wrapped:
     file: lib/Class/MOP/Method/Wrapped.pm
-    version: '2.1204'
+    version: '2.1213'
   Class::MOP::Module:
     file: lib/Class/MOP/Module.pm
-    version: '2.1204'
+    version: '2.1213'
   Class::MOP::Object:
     file: lib/Class/MOP/Object.pm
-    version: '2.1204'
+    version: '2.1213'
   Class::MOP::Package:
     file: lib/Class/MOP/Package.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose:
     file: lib/Moose.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Cookbook:
     file: lib/Moose/Cookbook.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Cookbook::Basics::BankAccount_MethodModifiersAndSubclassing:
     file: lib/Moose/Cookbook/Basics/BankAccount_MethodModifiersAndSubclassing.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Cookbook::Basics::BinaryTree_AttributeFeatures:
     file: lib/Moose/Cookbook/Basics/BinaryTree_AttributeFeatures.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Cookbook::Basics::BinaryTree_BuilderAndLazyBuild:
     file: lib/Moose/Cookbook/Basics/BinaryTree_BuilderAndLazyBuild.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Cookbook::Basics::Company_Subtypes:
     file: lib/Moose/Cookbook/Basics/Company_Subtypes.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Cookbook::Basics::DateTime_ExtendingNonMooseParent:
     file: lib/Moose/Cookbook/Basics/DateTime_ExtendingNonMooseParent.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Cookbook::Basics::Document_AugmentAndInner:
     file: lib/Moose/Cookbook/Basics/Document_AugmentAndInner.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Cookbook::Basics::Genome_OverloadingSubtypesAndCoercion:
     file: lib/Moose/Cookbook/Basics/Genome_OverloadingSubtypesAndCoercion.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Cookbook::Basics::HTTP_SubtypesAndCoercion:
     file: lib/Moose/Cookbook/Basics/HTTP_SubtypesAndCoercion.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Cookbook::Basics::Immutable:
     file: lib/Moose/Cookbook/Basics/Immutable.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Cookbook::Basics::Person_BUILDARGSAndBUILD:
     file: lib/Moose/Cookbook/Basics/Person_BUILDARGSAndBUILD.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Cookbook::Basics::Point_AttributesAndSubclassing:
     file: lib/Moose/Cookbook/Basics/Point_AttributesAndSubclassing.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Cookbook::Extending::Debugging_BaseClassRole:
     file: lib/Moose/Cookbook/Extending/Debugging_BaseClassRole.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Cookbook::Extending::ExtensionOverview:
     file: lib/Moose/Cookbook/Extending/ExtensionOverview.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Cookbook::Extending::Mooseish_MooseSugar:
     file: lib/Moose/Cookbook/Extending/Mooseish_MooseSugar.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Cookbook::Legacy::Debugging_BaseClassReplacement:
     file: lib/Moose/Cookbook/Legacy/Debugging_BaseClassReplacement.pod
-    version: '2.1204'
+    version: '2.1213'
+  Moose::Cookbook::Legacy::Labeled_AttributeMetaclass:
+    file: lib/Moose/Cookbook/Legacy/Labeled_AttributeMetaclass.pod
+    version: '2.1213'
+  Moose::Cookbook::Legacy::Table_ClassMetaclass:
+    file: lib/Moose/Cookbook/Legacy/Table_ClassMetaclass.pod
+    version: '2.1213'
   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.1213'
   Moose::Cookbook::Meta::Labeled_AttributeTrait:
     file: lib/Moose/Cookbook/Meta/Labeled_AttributeTrait.pod
-    version: '2.1204'
+    version: '2.1213'
   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.1213'
   Moose::Cookbook::Meta::Table_MetaclassTrait:
     file: lib/Moose/Cookbook/Meta/Table_MetaclassTrait.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Cookbook::Meta::WhyMeta:
     file: lib/Moose/Cookbook/Meta/WhyMeta.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Cookbook::Roles::ApplicationToInstance:
     file: lib/Moose/Cookbook/Roles/ApplicationToInstance.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Cookbook::Roles::Comparable_CodeReuse:
     file: lib/Moose/Cookbook/Roles/Comparable_CodeReuse.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Cookbook::Roles::Restartable_AdvancedComposition:
     file: lib/Moose/Cookbook/Roles/Restartable_AdvancedComposition.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Cookbook::Snack::Keywords:
     file: lib/Moose/Cookbook/Snack/Keywords.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Cookbook::Snack::Types:
     file: lib/Moose/Cookbook/Snack/Types.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Cookbook::Style:
     file: lib/Moose/Cookbook/Style.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception:
     file: lib/Moose/Exception.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::AccessorMustReadWrite:
     file: lib/Moose/Exception/AccessorMustReadWrite.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::AddParameterizableTypeTakesParameterizableType:
     file: lib/Moose/Exception/AddParameterizableTypeTakesParameterizableType.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::AddRoleTakesAMooseMetaRoleInstance:
     file: lib/Moose/Exception/AddRoleTakesAMooseMetaRoleInstance.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::AddRoleToARoleTakesAMooseMetaRole:
     file: lib/Moose/Exception/AddRoleToARoleTakesAMooseMetaRole.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::ApplyTakesABlessedInstance:
     file: lib/Moose/Exception/ApplyTakesABlessedInstance.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::AttachToClassNeedsAClassMOPClassInstanceOrASubclass:
     file: lib/Moose/Exception/AttachToClassNeedsAClassMOPClassInstanceOrASubclass.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::AttributeConflictInRoles:
     file: lib/Moose/Exception/AttributeConflictInRoles.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::AttributeConflictInSummation:
     file: lib/Moose/Exception/AttributeConflictInSummation.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::AttributeExtensionIsNotSupportedInRoles:
     file: lib/Moose/Exception/AttributeExtensionIsNotSupportedInRoles.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::AttributeIsRequired:
     file: lib/Moose/Exception/AttributeIsRequired.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::AttributeMustBeAnClassMOPMixinAttributeCoreOrSubclass:
     file: lib/Moose/Exception/AttributeMustBeAnClassMOPMixinAttributeCoreOrSubclass.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::AttributeNamesDoNotMatch:
     file: lib/Moose/Exception/AttributeNamesDoNotMatch.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::AttributeValueIsNotAnObject:
     file: lib/Moose/Exception/AttributeValueIsNotAnObject.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::AttributeValueIsNotDefined:
     file: lib/Moose/Exception/AttributeValueIsNotDefined.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::AutoDeRefNeedsArrayRefOrHashRef:
     file: lib/Moose/Exception/AutoDeRefNeedsArrayRefOrHashRef.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::BadOptionFormat:
     file: lib/Moose/Exception/BadOptionFormat.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::BothBuilderAndDefaultAreNotAllowed:
     file: lib/Moose/Exception/BothBuilderAndDefaultAreNotAllowed.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::BuilderDoesNotExist:
     file: lib/Moose/Exception/BuilderDoesNotExist.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::BuilderMethodNotSupportedForAttribute:
     file: lib/Moose/Exception/BuilderMethodNotSupportedForAttribute.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::BuilderMethodNotSupportedForInlineAttribute:
     file: lib/Moose/Exception/BuilderMethodNotSupportedForInlineAttribute.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::BuilderMustBeAMethodName:
     file: lib/Moose/Exception/BuilderMustBeAMethodName.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CallingMethodOnAnImmutableInstance:
     file: lib/Moose/Exception/CallingMethodOnAnImmutableInstance.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CallingReadOnlyMethodOnAnImmutableInstance:
     file: lib/Moose/Exception/CallingReadOnlyMethodOnAnImmutableInstance.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CanExtendOnlyClasses:
     file: lib/Moose/Exception/CanExtendOnlyClasses.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CanOnlyConsumeRole:
     file: lib/Moose/Exception/CanOnlyConsumeRole.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CanOnlyWrapBlessedCode:
     file: lib/Moose/Exception/CanOnlyWrapBlessedCode.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CanReblessOnlyIntoASubclass:
     file: lib/Moose/Exception/CanReblessOnlyIntoASubclass.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CanReblessOnlyIntoASuperclass:
     file: lib/Moose/Exception/CanReblessOnlyIntoASuperclass.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotAddAdditionalTypeCoercionsToUnion:
     file: lib/Moose/Exception/CannotAddAdditionalTypeCoercionsToUnion.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotAddAsAnAttributeToARole:
     file: lib/Moose/Exception/CannotAddAsAnAttributeToARole.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotApplyBaseClassRolesToRole:
     file: lib/Moose/Exception/CannotApplyBaseClassRolesToRole.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotAssignValueToReadOnlyAccessor:
     file: lib/Moose/Exception/CannotAssignValueToReadOnlyAccessor.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotAugmentIfLocalMethodPresent:
     file: lib/Moose/Exception/CannotAugmentIfLocalMethodPresent.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotAugmentNoSuperMethod:
     file: lib/Moose/Exception/CannotAugmentNoSuperMethod.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotAutoDerefWithoutIsa:
     file: lib/Moose/Exception/CannotAutoDerefWithoutIsa.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotAutoDereferenceTypeConstraint:
     file: lib/Moose/Exception/CannotAutoDereferenceTypeConstraint.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotCalculateNativeType:
     file: lib/Moose/Exception/CannotCalculateNativeType.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotCallAnAbstractBaseMethod:
     file: lib/Moose/Exception/CannotCallAnAbstractBaseMethod.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotCallAnAbstractMethod:
     file: lib/Moose/Exception/CannotCallAnAbstractMethod.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotCoerceAWeakRef:
     file: lib/Moose/Exception/CannotCoerceAWeakRef.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotCoerceAttributeWhichHasNoCoercion:
     file: lib/Moose/Exception/CannotCoerceAttributeWhichHasNoCoercion.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotCreateHigherOrderTypeWithoutATypeParameter:
     file: lib/Moose/Exception/CannotCreateHigherOrderTypeWithoutATypeParameter.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresent:
     file: lib/Moose/Exception/CannotCreateMethodAliasLocalMethodIsPresent.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresentInClass:
     file: lib/Moose/Exception/CannotCreateMethodAliasLocalMethodIsPresentInClass.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotDelegateLocalMethodIsPresent:
     file: lib/Moose/Exception/CannotDelegateLocalMethodIsPresent.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotDelegateWithoutIsa:
     file: lib/Moose/Exception/CannotDelegateWithoutIsa.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotFindDelegateMetaclass:
     file: lib/Moose/Exception/CannotFindDelegateMetaclass.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotFindType:
     file: lib/Moose/Exception/CannotFindType.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotFindTypeGivenToMatchOnType:
     file: lib/Moose/Exception/CannotFindTypeGivenToMatchOnType.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotFixMetaclassCompatibility:
     file: lib/Moose/Exception/CannotFixMetaclassCompatibility.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotGenerateInlineConstraint:
     file: lib/Moose/Exception/CannotGenerateInlineConstraint.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotInitializeMooseMetaRoleComposite:
     file: lib/Moose/Exception/CannotInitializeMooseMetaRoleComposite.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotInlineTypeConstraintCheck:
     file: lib/Moose/Exception/CannotInlineTypeConstraintCheck.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotLocatePackageInINC:
     file: lib/Moose/Exception/CannotLocatePackageInINC.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotMakeMetaclassCompatible:
     file: lib/Moose/Exception/CannotMakeMetaclassCompatible.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotOverrideALocalMethod:
     file: lib/Moose/Exception/CannotOverrideALocalMethod.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotOverrideBodyOfMetaMethods:
     file: lib/Moose/Exception/CannotOverrideBodyOfMetaMethods.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotOverrideLocalMethodIsPresent:
     file: lib/Moose/Exception/CannotOverrideLocalMethodIsPresent.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotOverrideNoSuperMethod:
     file: lib/Moose/Exception/CannotOverrideNoSuperMethod.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotRegisterUnnamedTypeConstraint:
     file: lib/Moose/Exception/CannotRegisterUnnamedTypeConstraint.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CannotUseLazyBuildAndDefaultSimultaneously:
     file: lib/Moose/Exception/CannotUseLazyBuildAndDefaultSimultaneously.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CircularReferenceInAlso:
     file: lib/Moose/Exception/CircularReferenceInAlso.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::ClassDoesNotHaveInitMeta:
     file: lib/Moose/Exception/ClassDoesNotHaveInitMeta.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::ClassDoesTheExcludedRole:
     file: lib/Moose/Exception/ClassDoesTheExcludedRole.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::ClassNamesDoNotMatch:
     file: lib/Moose/Exception/ClassNamesDoNotMatch.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CloneObjectExpectsAnInstanceOfMetaclass:
     file: lib/Moose/Exception/CloneObjectExpectsAnInstanceOfMetaclass.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CodeBlockMustBeACodeRef:
     file: lib/Moose/Exception/CodeBlockMustBeACodeRef.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CoercingWithoutCoercions:
     file: lib/Moose/Exception/CoercingWithoutCoercions.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CoercionAlreadyExists:
     file: lib/Moose/Exception/CoercionAlreadyExists.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CoercionNeedsTypeConstraint:
     file: lib/Moose/Exception/CoercionNeedsTypeConstraint.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::ConflictDetectedInCheckRoleExclusions:
     file: lib/Moose/Exception/ConflictDetectedInCheckRoleExclusions.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::ConflictDetectedInCheckRoleExclusionsInToClass:
     file: lib/Moose/Exception/ConflictDetectedInCheckRoleExclusionsInToClass.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::ConstructClassInstanceTakesPackageName:
     file: lib/Moose/Exception/ConstructClassInstanceTakesPackageName.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CouldNotCreateMethod:
     file: lib/Moose/Exception/CouldNotCreateMethod.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CouldNotCreateWriter:
     file: lib/Moose/Exception/CouldNotCreateWriter.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CouldNotEvalConstructor:
     file: lib/Moose/Exception/CouldNotEvalConstructor.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CouldNotEvalDestructor:
     file: lib/Moose/Exception/CouldNotEvalDestructor.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CouldNotFindTypeConstraintToCoerceFrom:
     file: lib/Moose/Exception/CouldNotFindTypeConstraintToCoerceFrom.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CouldNotGenerateInlineAttributeMethod:
     file: lib/Moose/Exception/CouldNotGenerateInlineAttributeMethod.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CouldNotLocateTypeConstraintForUnion:
     file: lib/Moose/Exception/CouldNotLocateTypeConstraintForUnion.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CouldNotParseType:
     file: lib/Moose/Exception/CouldNotParseType.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CreateMOPClassTakesArrayRefOfAttributes:
     file: lib/Moose/Exception/CreateMOPClassTakesArrayRefOfAttributes.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CreateMOPClassTakesArrayRefOfSuperclasses:
     file: lib/Moose/Exception/CreateMOPClassTakesArrayRefOfSuperclasses.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CreateMOPClassTakesHashRefOfMethods:
     file: lib/Moose/Exception/CreateMOPClassTakesHashRefOfMethods.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CreateTakesArrayRefOfRoles:
     file: lib/Moose/Exception/CreateTakesArrayRefOfRoles.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CreateTakesHashRefOfAttributes:
     file: lib/Moose/Exception/CreateTakesHashRefOfAttributes.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::CreateTakesHashRefOfMethods:
     file: lib/Moose/Exception/CreateTakesHashRefOfMethods.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::DefaultToMatchOnTypeMustBeCodeRef:
     file: lib/Moose/Exception/DefaultToMatchOnTypeMustBeCodeRef.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::DelegationToAClassWhichIsNotLoaded:
     file: lib/Moose/Exception/DelegationToAClassWhichIsNotLoaded.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::DelegationToARoleWhichIsNotLoaded:
     file: lib/Moose/Exception/DelegationToARoleWhichIsNotLoaded.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::DelegationToATypeWhichIsNotAClass:
     file: lib/Moose/Exception/DelegationToATypeWhichIsNotAClass.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::DoesRequiresRoleName:
     file: lib/Moose/Exception/DoesRequiresRoleName.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::EnumCalledWithAnArrayRefAndAdditionalArgs:
     file: lib/Moose/Exception/EnumCalledWithAnArrayRefAndAdditionalArgs.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::EnumValuesMustBeString:
     file: lib/Moose/Exception/EnumValuesMustBeString.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::ExtendsMissingArgs:
     file: lib/Moose/Exception/ExtendsMissingArgs.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::HandlesMustBeAHashRef:
     file: lib/Moose/Exception/HandlesMustBeAHashRef.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::IllegalInheritedOptions:
     file: lib/Moose/Exception/IllegalInheritedOptions.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::IllegalMethodTypeToAddMethodModifier:
     file: lib/Moose/Exception/IllegalMethodTypeToAddMethodModifier.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::IncompatibleMetaclassOfSuperclass:
     file: lib/Moose/Exception/IncompatibleMetaclassOfSuperclass.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::InitMetaRequiresClass:
     file: lib/Moose/Exception/InitMetaRequiresClass.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::InitializeTakesUnBlessedPackageName:
     file: lib/Moose/Exception/InitializeTakesUnBlessedPackageName.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::InstanceBlessedIntoWrongClass:
     file: lib/Moose/Exception/InstanceBlessedIntoWrongClass.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::InstanceMustBeABlessedReference:
     file: lib/Moose/Exception/InstanceMustBeABlessedReference.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::InvalidArgPassedToMooseUtilMetaRole:
     file: lib/Moose/Exception/InvalidArgPassedToMooseUtilMetaRole.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::InvalidArgumentToMethod:
     file: lib/Moose/Exception/InvalidArgumentToMethod.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::InvalidArgumentsToTraitAliases:
     file: lib/Moose/Exception/InvalidArgumentsToTraitAliases.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::InvalidBaseTypeGivenToCreateParameterizedTypeConstraint:
     file: lib/Moose/Exception/InvalidBaseTypeGivenToCreateParameterizedTypeConstraint.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::InvalidHandleValue:
     file: lib/Moose/Exception/InvalidHandleValue.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::InvalidHasProvidedInARole:
     file: lib/Moose/Exception/InvalidHasProvidedInARole.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::InvalidNameForType:
     file: lib/Moose/Exception/InvalidNameForType.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::InvalidRoleApplication:
     file: lib/Moose/Exception/InvalidRoleApplication.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::InvalidTypeConstraint:
     file: lib/Moose/Exception/InvalidTypeConstraint.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::InvalidTypeGivenToCreateParameterizedTypeConstraint:
     file: lib/Moose/Exception/InvalidTypeGivenToCreateParameterizedTypeConstraint.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::InvalidValueForIs:
     file: lib/Moose/Exception/InvalidValueForIs.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::IsaDoesNotDoTheRole:
     file: lib/Moose/Exception/IsaDoesNotDoTheRole.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::IsaLacksDoesMethod:
     file: lib/Moose/Exception/IsaLacksDoesMethod.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::LazyAttributeNeedsADefault:
     file: lib/Moose/Exception/LazyAttributeNeedsADefault.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::Legacy:
     file: lib/Moose/Exception/Legacy.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MOPAttributeNewNeedsAttributeName:
     file: lib/Moose/Exception/MOPAttributeNewNeedsAttributeName.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MatchActionMustBeACodeRef:
     file: lib/Moose/Exception/MatchActionMustBeACodeRef.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MessageParameterMustBeCodeRef:
     file: lib/Moose/Exception/MessageParameterMustBeCodeRef.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MetaclassIsAClassNotASubclassOfGivenMetaclass:
     file: lib/Moose/Exception/MetaclassIsAClassNotASubclassOfGivenMetaclass.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MetaclassIsARoleNotASubclassOfGivenMetaclass:
     file: lib/Moose/Exception/MetaclassIsARoleNotASubclassOfGivenMetaclass.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MetaclassIsNotASubclassOfGivenMetaclass:
     file: lib/Moose/Exception/MetaclassIsNotASubclassOfGivenMetaclass.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MetaclassMustBeASubclassOfMooseMetaClass:
     file: lib/Moose/Exception/MetaclassMustBeASubclassOfMooseMetaClass.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MetaclassMustBeASubclassOfMooseMetaRole:
     file: lib/Moose/Exception/MetaclassMustBeASubclassOfMooseMetaRole.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MetaclassMustBeDerivedFromClassMOPClass:
     file: lib/Moose/Exception/MetaclassMustBeDerivedFromClassMOPClass.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MetaclassNotLoaded:
     file: lib/Moose/Exception/MetaclassNotLoaded.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MetaclassTypeIncompatible:
     file: lib/Moose/Exception/MetaclassTypeIncompatible.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MethodExpectedAMetaclassObject:
     file: lib/Moose/Exception/MethodExpectedAMetaclassObject.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MethodExpectsFewerArgs:
     file: lib/Moose/Exception/MethodExpectsFewerArgs.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MethodExpectsMoreArgs:
     file: lib/Moose/Exception/MethodExpectsMoreArgs.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MethodModifierNeedsMethodName:
     file: lib/Moose/Exception/MethodModifierNeedsMethodName.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MethodNameConflictInRoles:
     file: lib/Moose/Exception/MethodNameConflictInRoles.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MethodNameNotFoundInInheritanceHierarchy:
     file: lib/Moose/Exception/MethodNameNotFoundInInheritanceHierarchy.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MethodNameNotGiven:
     file: lib/Moose/Exception/MethodNameNotGiven.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MustDefineAMethodName:
     file: lib/Moose/Exception/MustDefineAMethodName.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MustDefineAnAttributeName:
     file: lib/Moose/Exception/MustDefineAnAttributeName.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MustHaveAtLeastOneValueToEnumerate:
     file: lib/Moose/Exception/MustHaveAtLeastOneValueToEnumerate.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MustPassAHashOfOptions:
     file: lib/Moose/Exception/MustPassAHashOfOptions.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MustPassAMooseMetaRoleInstanceOrSubclass:
     file: lib/Moose/Exception/MustPassAMooseMetaRoleInstanceOrSubclass.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MustPassAPackageNameOrAnExistingClassMOPPackageInstance:
     file: lib/Moose/Exception/MustPassAPackageNameOrAnExistingClassMOPPackageInstance.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MustPassEvenNumberOfArguments:
     file: lib/Moose/Exception/MustPassEvenNumberOfArguments.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MustPassEvenNumberOfAttributeOptions:
     file: lib/Moose/Exception/MustPassEvenNumberOfAttributeOptions.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MustProvideANameForTheAttribute:
     file: lib/Moose/Exception/MustProvideANameForTheAttribute.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MustSpecifyAtleastOneMethod:
     file: lib/Moose/Exception/MustSpecifyAtleastOneMethod.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MustSpecifyAtleastOneRole:
     file: lib/Moose/Exception/MustSpecifyAtleastOneRole.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MustSpecifyAtleastOneRoleToApplicant:
     file: lib/Moose/Exception/MustSpecifyAtleastOneRoleToApplicant.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MustSupplyAClassMOPAttributeInstance:
     file: lib/Moose/Exception/MustSupplyAClassMOPAttributeInstance.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MustSupplyADelegateToMethod:
     file: lib/Moose/Exception/MustSupplyADelegateToMethod.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MustSupplyAMetaclass:
     file: lib/Moose/Exception/MustSupplyAMetaclass.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MustSupplyAMooseMetaAttributeInstance:
     file: lib/Moose/Exception/MustSupplyAMooseMetaAttributeInstance.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MustSupplyAnAccessorTypeToConstructWith:
     file: lib/Moose/Exception/MustSupplyAnAccessorTypeToConstructWith.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MustSupplyAnAttributeToConstructWith:
     file: lib/Moose/Exception/MustSupplyAnAttributeToConstructWith.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MustSupplyArrayRefAsCurriedArguments:
     file: lib/Moose/Exception/MustSupplyArrayRefAsCurriedArguments.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::MustSupplyPackageNameAndName:
     file: lib/Moose/Exception/MustSupplyPackageNameAndName.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::NeedsTypeConstraintUnionForTypeCoercionUnion:
     file: lib/Moose/Exception/NeedsTypeConstraintUnionForTypeCoercionUnion.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::NeitherAttributeNorAttributeNameIsGiven:
     file: lib/Moose/Exception/NeitherAttributeNorAttributeNameIsGiven.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::NeitherClassNorClassNameIsGiven:
     file: lib/Moose/Exception/NeitherClassNorClassNameIsGiven.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::NeitherRoleNorRoleNameIsGiven:
     file: lib/Moose/Exception/NeitherRoleNorRoleNameIsGiven.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::NeitherTypeNorTypeNameIsGiven:
     file: lib/Moose/Exception/NeitherTypeNorTypeNameIsGiven.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::NoAttributeFoundInSuperClass:
     file: lib/Moose/Exception/NoAttributeFoundInSuperClass.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::NoBodyToInitializeInAnAbstractBaseClass:
     file: lib/Moose/Exception/NoBodyToInitializeInAnAbstractBaseClass.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::NoCasesMatched:
     file: lib/Moose/Exception/NoCasesMatched.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::NoConstraintCheckForTypeConstraint:
     file: lib/Moose/Exception/NoConstraintCheckForTypeConstraint.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::NoDestructorClassSpecified:
     file: lib/Moose/Exception/NoDestructorClassSpecified.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::NoImmutableTraitSpecifiedForClass:
     file: lib/Moose/Exception/NoImmutableTraitSpecifiedForClass.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::NoParentGivenToSubtype:
     file: lib/Moose/Exception/NoParentGivenToSubtype.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::OnlyInstancesCanBeCloned:
     file: lib/Moose/Exception/OnlyInstancesCanBeCloned.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::OperatorIsRequired:
     file: lib/Moose/Exception/OperatorIsRequired.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::OverrideConflictInComposition:
     file: lib/Moose/Exception/OverrideConflictInComposition.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::OverrideConflictInSummation:
     file: lib/Moose/Exception/OverrideConflictInSummation.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::PackageDoesNotUseMooseExporter:
     file: lib/Moose/Exception/PackageDoesNotUseMooseExporter.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::PackageNameAndNameParamsNotGivenToWrap:
     file: lib/Moose/Exception/PackageNameAndNameParamsNotGivenToWrap.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::PackagesAndModulesAreNotCachable:
     file: lib/Moose/Exception/PackagesAndModulesAreNotCachable.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::ParameterIsNotSubtypeOfParent:
     file: lib/Moose/Exception/ParameterIsNotSubtypeOfParent.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::ReferencesAreNotAllowedAsDefault:
     file: lib/Moose/Exception/ReferencesAreNotAllowedAsDefault.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::RequiredAttributeLacksInitialization:
     file: lib/Moose/Exception/RequiredAttributeLacksInitialization.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::RequiredAttributeNeedsADefault:
     file: lib/Moose/Exception/RequiredAttributeNeedsADefault.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::RequiredMethodsImportedByClass:
     file: lib/Moose/Exception/RequiredMethodsImportedByClass.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::RequiredMethodsNotImplementedByClass:
     file: lib/Moose/Exception/RequiredMethodsNotImplementedByClass.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::Role::Attribute:
     file: lib/Moose/Exception/Role/Attribute.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::Role::AttributeName:
     file: lib/Moose/Exception/Role/AttributeName.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::Role::Class:
     file: lib/Moose/Exception/Role/Class.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::Role::EitherAttributeOrAttributeName:
     file: lib/Moose/Exception/Role/EitherAttributeOrAttributeName.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::Role::Instance:
     file: lib/Moose/Exception/Role/Instance.pm
-    version: '2.1204'
+    version: '2.1213'
+  Moose::Exception::Role::InstanceClass:
+    file: lib/Moose/Exception/Role/InstanceClass.pm
+    version: '2.1213'
   Moose::Exception::Role::InvalidAttributeOptions:
     file: lib/Moose/Exception/Role/InvalidAttributeOptions.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::Role::Method:
     file: lib/Moose/Exception/Role/Method.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::Role::ParamsHash:
     file: lib/Moose/Exception/Role/ParamsHash.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::Role::Role:
     file: lib/Moose/Exception/Role/Role.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::Role::RoleForCreate:
     file: lib/Moose/Exception/Role/RoleForCreate.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::Role::RoleForCreateMOPClass:
     file: lib/Moose/Exception/Role/RoleForCreateMOPClass.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::Role::TypeConstraint:
     file: lib/Moose/Exception/Role/TypeConstraint.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::RoleDoesTheExcludedRole:
     file: lib/Moose/Exception/RoleDoesTheExcludedRole.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::RoleExclusionConflict:
     file: lib/Moose/Exception/RoleExclusionConflict.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::RoleNameRequired:
     file: lib/Moose/Exception/RoleNameRequired.pm
-    version: '2.1204'
+    version: '2.1213'
   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.1213'
   Moose::Exception::RolesDoNotSupportAugment:
     file: lib/Moose/Exception/RolesDoNotSupportAugment.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::RolesDoNotSupportExtends:
     file: lib/Moose/Exception/RolesDoNotSupportExtends.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::RolesDoNotSupportInner:
     file: lib/Moose/Exception/RolesDoNotSupportInner.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::RolesDoNotSupportRegexReferencesForMethodModifiers:
     file: lib/Moose/Exception/RolesDoNotSupportRegexReferencesForMethodModifiers.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::RolesInCreateTakesAnArrayRef:
     file: lib/Moose/Exception/RolesInCreateTakesAnArrayRef.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::RolesListMustBeInstancesOfMooseMetaRole:
     file: lib/Moose/Exception/RolesListMustBeInstancesOfMooseMetaRole.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::SingleParamsToNewMustBeHashRef:
     file: lib/Moose/Exception/SingleParamsToNewMustBeHashRef.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::TriggerMustBeACodeRef:
     file: lib/Moose/Exception/TriggerMustBeACodeRef.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::TypeConstraintCannotBeUsedForAParameterizableType:
     file: lib/Moose/Exception/TypeConstraintCannotBeUsedForAParameterizableType.pm
-    version: '2.1204'
+    version: '2.1213'
   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.1213'
   Moose::Exception::TypeParameterMustBeMooseMetaType:
     file: lib/Moose/Exception/TypeParameterMustBeMooseMetaType.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::UnableToCanonicalizeHandles:
     file: lib/Moose/Exception/UnableToCanonicalizeHandles.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::UnableToCanonicalizeNonRolePackage:
     file: lib/Moose/Exception/UnableToCanonicalizeNonRolePackage.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::UnableToRecognizeDelegateMetaclass:
     file: lib/Moose/Exception/UnableToRecognizeDelegateMetaclass.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::UndefinedHashKeysPassedToMethod:
     file: lib/Moose/Exception/UndefinedHashKeysPassedToMethod.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::UnionCalledWithAnArrayRefAndAdditionalArgs:
     file: lib/Moose/Exception/UnionCalledWithAnArrayRefAndAdditionalArgs.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::UnionTakesAtleastTwoTypeNames:
     file: lib/Moose/Exception/UnionTakesAtleastTwoTypeNames.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::ValidationFailedForInlineTypeConstraint:
     file: lib/Moose/Exception/ValidationFailedForInlineTypeConstraint.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::ValidationFailedForTypeConstraint:
     file: lib/Moose/Exception/ValidationFailedForTypeConstraint.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::WrapTakesACodeRefToBless:
     file: lib/Moose/Exception/WrapTakesACodeRefToBless.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exception::WrongTypeConstraintGiven:
     file: lib/Moose/Exception/WrongTypeConstraintGiven.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Exporter:
     file: lib/Moose/Exporter.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Intro:
     file: lib/Moose/Intro.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Manual:
     file: lib/Moose/Manual.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Manual::Attributes:
     file: lib/Moose/Manual/Attributes.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Manual::BestPractices:
     file: lib/Moose/Manual/BestPractices.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Manual::Classes:
     file: lib/Moose/Manual/Classes.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Manual::Concepts:
     file: lib/Moose/Manual/Concepts.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Manual::Construction:
     file: lib/Moose/Manual/Construction.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Manual::Contributing:
     file: lib/Moose/Manual/Contributing.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Manual::Delegation:
     file: lib/Moose/Manual/Delegation.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Manual::Delta:
     file: lib/Moose/Manual/Delta.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Manual::Exceptions:
     file: lib/Moose/Manual/Exceptions.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Manual::Exceptions::Manifest:
     file: lib/Moose/Manual/Exceptions/Manifest.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Manual::FAQ:
     file: lib/Moose/Manual/FAQ.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Manual::MOP:
     file: lib/Moose/Manual/MOP.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Manual::MethodModifiers:
     file: lib/Moose/Manual/MethodModifiers.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Manual::MooseX:
     file: lib/Moose/Manual/MooseX.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Manual::Roles:
     file: lib/Moose/Manual/Roles.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Manual::Support:
     file: lib/Moose/Manual/Support.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Manual::Types:
     file: lib/Moose/Manual/Types.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Manual::Unsweetened:
     file: lib/Moose/Manual/Unsweetened.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::Attribute:
     file: lib/Moose/Meta/Attribute.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::Attribute::Custom::Moose:
     file: lib/Moose/Meta/Attribute.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::Attribute::Native:
     file: lib/Moose/Meta/Attribute/Native.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::Attribute::Native::Trait::Array:
     file: lib/Moose/Meta/Attribute/Native/Trait/Array.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::Attribute::Native::Trait::Bool:
     file: lib/Moose/Meta/Attribute/Native/Trait/Bool.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::Attribute::Native::Trait::Code:
     file: lib/Moose/Meta/Attribute/Native/Trait/Code.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::Attribute::Native::Trait::Counter:
     file: lib/Moose/Meta/Attribute/Native/Trait/Counter.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::Attribute::Native::Trait::Hash:
     file: lib/Moose/Meta/Attribute/Native/Trait/Hash.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::Attribute::Native::Trait::Number:
     file: lib/Moose/Meta/Attribute/Native/Trait/Number.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::Attribute::Native::Trait::String:
     file: lib/Moose/Meta/Attribute/Native/Trait/String.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::Class:
     file: lib/Moose/Meta/Class.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::Instance:
     file: lib/Moose/Meta/Instance.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::Method:
     file: lib/Moose/Meta/Method.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::Method::Accessor:
     file: lib/Moose/Meta/Method/Accessor.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::Method::Augmented:
     file: lib/Moose/Meta/Method/Augmented.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::Method::Constructor:
     file: lib/Moose/Meta/Method/Constructor.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::Method::Delegation:
     file: lib/Moose/Meta/Method/Delegation.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::Method::Destructor:
     file: lib/Moose/Meta/Method/Destructor.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::Method::Meta:
     file: lib/Moose/Meta/Method/Meta.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::Method::Overridden:
     file: lib/Moose/Meta/Method/Overridden.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::Role:
     file: lib/Moose/Meta/Role.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::Role::Application:
     file: lib/Moose/Meta/Role/Application.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::Role::Application::RoleSummation:
     file: lib/Moose/Meta/Role/Application/RoleSummation.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::Role::Application::ToClass:
     file: lib/Moose/Meta/Role/Application/ToClass.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::Role::Application::ToInstance:
     file: lib/Moose/Meta/Role/Application/ToInstance.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::Role::Application::ToRole:
     file: lib/Moose/Meta/Role/Application/ToRole.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::Role::Attribute:
     file: lib/Moose/Meta/Role/Attribute.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::Role::Composite:
     file: lib/Moose/Meta/Role/Composite.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::Role::Method:
     file: lib/Moose/Meta/Role/Method.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::Role::Method::Conflicting:
     file: lib/Moose/Meta/Role/Method/Conflicting.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::Role::Method::Required:
     file: lib/Moose/Meta/Role/Method/Required.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::TypeCoercion:
     file: lib/Moose/Meta/TypeCoercion.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::TypeCoercion::Union:
     file: lib/Moose/Meta/TypeCoercion/Union.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::TypeConstraint:
     file: lib/Moose/Meta/TypeConstraint.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::TypeConstraint::Class:
     file: lib/Moose/Meta/TypeConstraint/Class.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::TypeConstraint::DuckType:
     file: lib/Moose/Meta/TypeConstraint/DuckType.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::TypeConstraint::Enum:
     file: lib/Moose/Meta/TypeConstraint/Enum.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::TypeConstraint::Parameterizable:
     file: lib/Moose/Meta/TypeConstraint/Parameterizable.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::TypeConstraint::Parameterized:
     file: lib/Moose/Meta/TypeConstraint/Parameterized.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::TypeConstraint::Registry:
     file: lib/Moose/Meta/TypeConstraint/Registry.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::TypeConstraint::Role:
     file: lib/Moose/Meta/TypeConstraint/Role.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Meta::TypeConstraint::Union:
     file: lib/Moose/Meta/TypeConstraint/Union.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Object:
     file: lib/Moose/Object.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Role:
     file: lib/Moose/Role.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Spec::Role:
     file: lib/Moose/Spec/Role.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Unsweetened:
     file: lib/Moose/Unsweetened.pod
-    version: '2.1204'
+    version: '2.1213'
   Moose::Util:
     file: lib/Moose/Util.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Util::MetaRole:
     file: lib/Moose/Util/MetaRole.pm
-    version: '2.1204'
+    version: '2.1213'
   Moose::Util::TypeConstraints:
     file: lib/Moose/Util/TypeConstraints.pm
-    version: '2.1204'
+    version: '2.1213'
   Test::Moose:
     file: lib/Test/Moose.pm
-    version: '2.1204'
+    version: '2.1213'
   metaclass:
     file: lib/metaclass.pm
-    version: '2.1204'
+    version: '2.1213'
   oose:
     file: lib/oose.pm
-    version: '2.1204'
+    version: '2.1213'
 recommends:
   Devel::PartialDump: '0.14'
 requires:
@@ -1073,12 +1075,13 @@ requires:
   Class::Load::XS: '0.01'
   Data::OptList: '0.107'
   Devel::GlobalDestruction: '0'
-  Devel::StackTrace: '1.30'
+  Devel::StackTrace: '1.33'
   Dist::CheckConflicts: '0.02'
   Eval::Closure: '0.04'
   List::MoreUtils: '0.28'
   MRO::Compat: '0.05'
   Module::Runtime: '0.014'
+  Module::Runtime::Conflicts: '0'
   Package::DeprecationManager: '0.11'
   Package::Stash: '0.32'
   Package::Stash::XS: '0.24'
@@ -1090,21 +1093,23 @@ requires:
   Try::Tiny: '0.02'
   parent: '0.223'
   perl: v5.8.3
+  strict: '1.03'
+  warnings: '1.03'
 resources:
   IRC: irc://irc.perl.org/#moose
   MailingList: http://lists.perl.org/list/moose.html
   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.1213'
 x_Dist_Zilla:
   perl:
-    version: '5.019007'
+    version: '5.021003'
   plugins:
     -
-      class: inc::RequireAuthorDeps
-      name: =inc::RequireAuthorDeps
-      version: ~
+      class: Dist::Zilla::Plugin::EnsurePrereqsInstalled
+      name: EnsurePrereqsInstalled
+      version: '0.005'
     -
       class: inc::Clean
       name: =inc::Clean
@@ -1112,96 +1117,99 @@ x_Dist_Zilla:
     -
       class: Dist::Zilla::Plugin::GatherDir
       name: GatherDir
-      version: '5.012'
+      version: '5.020'
     -
       class: Dist::Zilla::Plugin::PruneCruft
       name: PruneCruft
-      version: '5.012'
+      version: '5.020'
     -
       class: Dist::Zilla::Plugin::ManifestSkip
       name: ManifestSkip
-      version: '5.012'
+      version: '5.020'
     -
       class: Dist::Zilla::Plugin::MetaYAML
       name: MetaYAML
-      version: '5.012'
+      version: '5.020'
     -
       class: Dist::Zilla::Plugin::MetaJSON
       name: MetaJSON
-      version: '5.012'
+      version: '5.020'
     -
       class: Dist::Zilla::Plugin::License
       name: License
-      version: '5.012'
+      version: '5.020'
     -
       class: Dist::Zilla::Plugin::ExecDir
       name: ExecDir
-      version: '5.012'
+      version: '5.020'
     -
       class: Dist::Zilla::Plugin::ShareDir
       name: ShareDir
-      version: '5.012'
+      version: '5.020'
     -
       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.020'
     -
       class: Dist::Zilla::Plugin::NextRelease
       name: NextRelease
-      version: '5.012'
-    -
-      class: Dist::Zilla::Plugin::PruneFiles
-      name: PruneFiles
-      version: '5.012'
+      version: '5.020'
     -
       class: Dist::Zilla::Plugin::PkgVersion
       name: PkgVersion
-      version: '5.012'
+      version: '5.020'
     -
       class: Dist::Zilla::Plugin::MetaConfig
       name: MetaConfig
-      version: '5.012'
+      version: '5.020'
     -
-      class: Dist::Zilla::Plugin::Authority
-      name: Authority
-      version: '1.006'
+      class: inc::SimpleAuthority
+      name: =inc::SimpleAuthority
+      version: ~
     -
       class: Dist::Zilla::Plugin::MetaResources
       name: MetaResources
-      version: '5.012'
+      version: '5.020'
+    -
+      class: Dist::Zilla::Plugin::FileFinder::ByName
+      name: PodModules
+      version: '5.020'
+    -
+      class: Dist::Zilla::Plugin::FileFinder::Filter
+      name: ModulesSansPod
+      version: '5.020'
+    -
+      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.020'
         Dist::Zilla::Role::MetaProvider::Provider:
           inherit_missing: '1'
           inherit_version: '1'
           meta_noindex: '1'
       name: MetaProvides::Package
-      version: '2.000001'
+      version: '2.001002'
     -
       class: Dist::Zilla::Plugin::MetaNoIndex
       name: MetaNoIndex
-      version: '5.012'
+      version: '5.020'
     -
       class: Dist::Zilla::Plugin::SurgicalPodWeaver
       config:
@@ -1290,7 +1298,7 @@ x_Dist_Zilla:
           phase: release
           skip: []
       name: PromptIfStale
-      version: '0.015'
+      version: '0.027'
     -
       class: Dist::Zilla::Plugin::EOLTests
       name: EOLTests
@@ -1298,37 +1306,46 @@ x_Dist_Zilla:
     -
       class: Dist::Zilla::Plugin::PodSyntaxTests
       name: PodSyntaxTests
-      version: '5.012'
+      version: '5.020'
     -
       class: Dist::Zilla::Plugin::Test::NoTabs
       config:
         Dist::Zilla::Plugin::Test::NoTabs:
-          module_finder:
+          filename: xt/author/no-tabs.t
+          finder:
             - ':InstallModules'
-          script_finder:
             - ':ExecFiles'
+            - ':TestFiles'
       name: Test::NoTabs
-      version: '0.06'
+      version: '0.09'
     -
       class: Dist::Zilla::Plugin::MetaTests
       name: MetaTests
-      version: '5.012'
+      version: '5.020'
     -
       class: Dist::Zilla::Plugin::Test::Kwalitee
+      config:
+        Dist::Zilla::Plugin::Test::Kwalitee:
+          filename: xt/release/kwalitee.t
+          skiptest:
+            - use_strict
       name: Test::Kwalitee
-      version: '2.07'
+      version: '2.11'
     -
       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.022'
     -
       class: Dist::Zilla::Plugin::Test::ReportPrereqs
       name: Test::ReportPrereqs
-      version: '0.013'
+      version: '0.019'
     -
       class: Dist::Zilla::Plugin::Test::CPAN::Changes
       name: Test::CPAN::Changes
@@ -1337,13 +1354,47 @@ x_Dist_Zilla:
       class: Dist::Zilla::Plugin::Test::Compile
       config:
         Dist::Zilla::Plugin::Test::Compile:
-          filename: xt/author/00-compile.t
+          bail_out_on_fail: '1'
+          fail_on_warning: author
+          fake_home: '0'
+          filename: xt/release/00-compile.t
           module_finder:
             - ':InstallModules'
+          needs_display: '0'
+          phase: develop
           script_finder:
             - ':ExecFiles'
+          skips:
+            - ^Class::MOP::Attribute$
+            - ^Class::MOP::Class$
+            - ^Class::MOP::Method::Accessor$
+            - ^Class::MOP::Method::Constructor$
+            - ^Class::MOP::Method::Inlined$
+            - ^Class::MOP::Method::Wrapped$
+            - ^Class::MOP::Mixin::HasAttributes$
+            - ^Class::MOP::Module$
+            - ^Class::MOP::Package$
+            - ^Moose::Meta::Attribute$
+            - ^Moose::Meta::Attribute::Native$
+            - ^Moose::Meta::Mixin::AttributeCore$
+            - ^Moose::Meta::Role::Attribute$
+            - ^Moose::Meta::TypeConstraint::Class$
+            - ^Moose::Meta::TypeConstraint::DuckType$
+            - ^Moose::Meta::TypeConstraint::Enum$
+            - ^Moose::Meta::TypeConstraint::Parameterizable$
+            - ^Moose::Meta::TypeConstraint::Parameterized$
+            - ^Moose::Meta::TypeConstraint::Role$
+            - ^Moose::Meta::TypeConstraint::Union$
       name: Test::Compile
-      version: '2.039'
+      version: '2.046'
+    -
+      class: inc::CheckReleaseType
+      name: =inc::CheckReleaseType
+      version: ~
+    -
+      class: Dist::Zilla::Plugin::CheckVersionIncrement
+      name: CheckVersionIncrement
+      version: '0.121750'
     -
       class: Dist::Zilla::Plugin::CheckChangesHasContent
       name: CheckChangesHasContent
@@ -1355,7 +1406,7 @@ x_Dist_Zilla:
           phase: runtime
           type: requires
       name: Prereqs
-      version: '5.012'
+      version: '5.020'
     -
       class: Dist::Zilla::Plugin::Prereqs
       config:
@@ -1363,7 +1414,7 @@ x_Dist_Zilla:
           phase: test
           type: requires
       name: TestRequires
-      version: '5.012'
+      version: '5.020'
     -
       class: Dist::Zilla::Plugin::Prereqs
       config:
@@ -1371,11 +1422,11 @@ x_Dist_Zilla:
           phase: configure
           type: requires
       name: ConfigureRequires
-      version: '5.012'
+      version: '5.020'
     -
       class: Dist::Zilla::Plugin::Prereqs::AuthorDeps
       name: Prereqs::AuthorDeps
-      version: '0.002'
+      version: '0.003'
     -
       class: Dist::Zilla::Plugin::Prereqs
       config:
@@ -1383,7 +1434,7 @@ x_Dist_Zilla:
           phase: develop
           type: requires
       name: DevelopRequires
-      version: '5.012'
+      version: '5.020'
     -
       class: Dist::Zilla::Plugin::Prereqs
       config:
@@ -1391,19 +1442,18 @@ 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.020'
     -
       class: Dist::Zilla::Plugin::Conflicts
       name: Conflicts
-      version: '0.13'
+      version: '0.16'
+    -
+      class: Dist::Zilla::Plugin::Test::CheckBreaks
+      config:
+        Dist::Zilla::Plugin::Test::CheckBreaks:
+          conflicts_module: Moose::Conflicts
+      name: Test::CheckBreaks
+      version: '0.011'
     -
       class: inc::CheckDelta
       name: =inc::CheckDelta
@@ -1415,35 +1465,90 @@ x_Dist_Zilla:
     -
       class: Dist::Zilla::Plugin::Git::Remote::Check
       name: Git::Remote::Check
-      version: 0.2.0
+      version: 0.1.2
     -
       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.024'
+    -
+      class: Dist::Zilla::Plugin::TestRelease
+      name: TestRelease
+      version: '5.020'
     -
       class: Dist::Zilla::Plugin::ConfirmRelease
       name: ConfirmRelease
-      version: '5.012'
+      version: '5.020'
     -
       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.024'
     -
       class: Dist::Zilla::Plugin::Git::Tag
+      config:
+        Dist::Zilla::Plugin::Git::Tag:
+          branch: ~
+          signed: 0
+          tag: '2.1213'
+          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.024'
     -
       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.024'
     -
-      class: Dist::Zilla::Plugin::ContributorsFromGit
-      name: ContributorsFromGit
-      version: '0.006'
+      class: Dist::Zilla::Plugin::UploadToCPAN
+      name: UploadToCPAN
+      version: '5.020'
+    -
+      class: Dist::Zilla::Plugin::Git::Contributors
+      config:
+        Dist::Zilla::Plugin::Git::Contributors:
+          include_authors: '0'
+          include_releaser: '1'
+          order_by: name
+          paths: []
+      name: Git::Contributors
+      version: '0.007'
     -
       class: inc::GenerateDocs
       name: =inc::GenerateDocs
@@ -1451,126 +1556,131 @@ x_Dist_Zilla:
     -
       class: Dist::Zilla::Plugin::FinderCode
       name: ':InstallModules'
-      version: '5.012'
+      version: '5.020'
     -
       class: Dist::Zilla::Plugin::FinderCode
       name: ':IncModules'
-      version: '5.012'
+      version: '5.020'
     -
       class: Dist::Zilla::Plugin::FinderCode
       name: ':TestFiles'
-      version: '5.012'
+      version: '5.020'
     -
       class: Dist::Zilla::Plugin::FinderCode
       name: ':ExecFiles'
-      version: '5.012'
+      version: '5.020'
     -
       class: Dist::Zilla::Plugin::FinderCode
       name: ':ShareFiles'
-      version: '5.012'
+      version: '5.020'
     -
       class: Dist::Zilla::Plugin::FinderCode
       name: ':MainModule'
-      version: '5.012'
+      version: '5.020'
     -
       class: Dist::Zilla::Plugin::FinderCode
       name: ':AllFiles'
-      version: '5.012'
+      version: '5.020'
     -
       class: Dist::Zilla::Plugin::FinderCode
       name: ':NoFiles'
-      version: '5.012'
+      version: '5.020'
   zilla:
     class: Dist::Zilla::Dist::Builder
     config:
       is_trial: '0'
-    version: '5.012'
+    version: '5.020'
 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>'
   - 'Adam J. Foxson <fhoxh@pobox.com>'
   - 'Adam Kennedy <adamk@cpan.org>'
+  - 'Ævar Arnfjörð Bjarmason <avarab@gmail.com>'
   - 'Anders Nor Berle <berle@cpan.org>'
   - 'Ansgar Burchardt <ansgar@43-1.org>'
   - '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>'
   - 'Christian Hansen <chansen@cpan.org>'
   - 'Christopher J. Madsen <perl@cjmweb.net>'
+  - 'Chris Weyl <cweyl@alumni.drew.edu>'
+  - 'chromatic <chromatic@wgz.org>'
   - 'Cory Watson <github@onemogin.com>'
   - 'Curtis Jewell <perl@csjewell.fastmail.us>'
+  - 'Dagfinn Ilmari Mannsåker <ilmari@ilmari.org>'
   - 'Daisuke Maki (lestrrat) <daisuke@endeworks.jp>'
   - 'Dan Dascalescu <ddascaNOSPAMlescu@gmail.com>'
   - 'Dann <techmemo@gmail.com>'
@@ -1580,18 +1690,23 @@ x_contributors:
   - 'Dylan William Hardison <dylan@hardison.net>'
   - 'Eric Wilhelm <ewilhelm@cpan.org>'
   - 'Evan Carroll <evan@dealermade.com>'
+  - 'franck cuny <franck@lumberjaph.net>'
   - 'Frew Schmidt <frioux@gmail.com>'
   - 'Gerda Shank <gerda.shank@gmail.com>'
+  - 'gfx <gfuji@cpan.org>'
   - 'Graham Knop <haarg@haarg.org>'
+  - 'gregor herrmann <gregoa@debian.org>'
   - 'Guillermo Roditi <groditi@gmail.com>'
+  - 'hakim <hakim.cassimally@gmail.com>'
   - 'Henry Van Styn <vanstyn@intellitree.com>'
   - 'Jason May <jason.a.may@gmail.com>'
   - 'Jay Allen <jay@endevver.com>'
   - 'Jay Hannah <jay@jays.net>'
   - 'Jay Kuri <jayk@jay-kuris-macbook.local>'
   - 'Jeff Bisbee <jbisbee@biz.(none)>'
-  - 'Jess Robinson <cpan@desert-island.me.uk>'
   - 'Jesse Vincent <jesse@bestpractical.com>'
+  - 'Jess Robinson <cpan@desert-island.me.uk>'
+  - 'joel <joel@fysh.org>'
   - 'John Douglas Porter <jdporter@cpan.org>'
   - 'John Goulah <jgoulah@cpan.org>'
   - 'John Napiorkowski <jjnapiork@cpan.org>'
@@ -1601,18 +1716,22 @@ x_contributors:
   - 'Kent Fredric <kentfredric@gmail.com>'
   - 'Lars Dɪᴇᴄᴋᴏᴡ 迪拉斯 <daxim@cpan.org>'
   - 'Leon Brocard <acme@astray.com>'
-  - 'Marc Mims <marc@questright.com>'
   - 'Marcel Grünauer <hanekomu@gmail.com>'
+  - 'Marc Mims <marc@questright.com>'
   - 'Marcus Ramberg <marcus@nordaaker.com>'
-  - 'Mark A. Stratman <stratman@gmail.com>'
   - 'Mark Allen <mrallen1@yahoo.com>'
+  - 'Mark A. Stratman <stratman@gmail.com>'
   - 'Mateu X Hunter <hunter@missoula.org>'
-  - 'Matt Kraai <kraai@ftbfs.org>'
   - 'Matthew Horsfall <wolfsage@gmail.com>'
+  - 'matthof <rmhofmann@gmail.com>'
+  - 'Matt Kraai <kraai@ftbfs.org>'
+  - 'michaelr <michaelr@michaelr-laptop.(none)>'
+  - '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>'
+  - 'nperez <nperez@cpan.org>'
   - 'Olaf Alders <olaf@wundersolutions.com>'
   - 'Olivier Mengué <dolmen@cpan.org>'
   - 'Olof Johansson <olof@ethup.se>'
@@ -1623,36 +1742,29 @@ x_contributors:
   - 'Pedro Melo <melo@simplicidade.org>'
   - 'Perlover <perlover@perlover.com>'
   - 'Peter Shangov <pshangov@yahoo.com>'
+  - 'Philippe Bruhat (BooK) <book@cpan.org>'
   - 'Phillip Smith <ps@phillipadsmith.com>'
   - 'Piotr Roszatycki <piotr.roszatycki@gmail.com>'
+  - 'pktm <pktm@users.noreply.github.com>'
   - 'Rafael Kitover <rkitover@cpan.org>'
   - 'Ricardo Signes <rjbs@cpan.org>'
-  - "Robert 'phaylon' Sedlacek <rs@474.at>"
   - 'Robert Boone <robo4288@gmail.com>'
   - 'Robert Buels <rmb32@cornell.edu>'
+  - "Robert 'phaylon' Sedlacek <rs@474.at>"
   - 'Robin V <robinsp-gmail-com@nospam.com>'
+  - 'rodrigolive <rodrigolive@gmail.com>'
   - 'Sam Vilain <sam.vilain@catalyst.net.nz>'
   - 'Scott McWhirter <konobi@cpan.org>'
+  - 'shelling <navyblueshellingford@gmail.com>'
   - '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>'
   - 'Tuomas Jormola <tj@solitudo.net>'
   - 'Upasana Shukla <me@upasana.me>'
   - 'Wallace Reis <reis.wallace@gmail.com>'
+  - 'wickline <m-s-w-github@wickline.org>'
   - 'Zachary Lome <zachary.lome@baml.com>'
   - 'Zoffix Znet <cpan@zoffix.com>'
-  - 'chromatic <chromatic@wgz.org>'
-  - 'franck cuny <franck@lumberjaph.net>'
-  - 'gfx <gfuji@cpan.org>'
-  - 'gregor herrmann <gregoa@debian.org>'
-  - 'hakim <hakim.cassimally@gmail.com>'
-  - 'joel <joel@fysh.org>'
-  - 'matthof <rmhofmann@gmail.com>'
-  - 'michaelr <michaelr@michaelr-laptop.(none)>'
-  - 'nperez <nperez@cpan.org>'
-  - 'rodrigolive <rodrigolive@gmail.com>'
-  - 'shelling <navyblueshellingford@gmail.com>'
-  - 'wickline <m-s-w-github@wickline.org>'
-  - 'Ævar Arnfjörð Bjarmason <avarab@gmail.com>'
@@ -1,6 +1,6 @@
 # This Makefile.PL for Moose was generated by
 # inc::MakeMaker <self>
-# and Dist::Zilla::Plugin::MakeMaker::Awesome 0.20.
+# and Dist::Zilla::Plugin::MakeMaker::Awesome 0.27.
 # Don't edit it but the dist.ini and plugins used to construct it.
 
 use strict;
@@ -52,20 +52,16 @@ sub can_run {
 die 'This distribution requires a working compiler' unless can_xs();
 
 use 5.008003;
-
-use ExtUtils::MakeMaker 6.30;
+use ExtUtils::MakeMaker;
 check_conflicts();
 
-
-
 my %WriteMakefileArgs = (
   "ABSTRACT" => "A postmodern object system for Perl 5",
   "AUTHOR" => "Stevan Little <stevan.little\@iinteractive.com>, Dave Rolsky <autarch\@urth.org>, Jesse Luehrs <doy\@tozt.net>, Shawn M Moore <code\@sartak.org>, \x{5d9}\x{5d5}\x{5d1}\x{5dc} \x{5e7}\x{5d5}\x{5d2}'\x{5de}\x{5df} (Yuval Kogman) <nothingmuch\@woobling.org>, Karen Etheridge <ether\@cpan.org>, Florian Ragwitz <rafl\@debian.org>, Hans Dieter Pearcey <hdp\@weftsoar.net>, Chris Prather <chris\@prather.org>, Matt S Trout <mst\@shadowcat.co.uk>",
-  "BUILD_REQUIRES" => {},
   "CONFIGURE_REQUIRES" => {
     "Dist::CheckConflicts" => "0.02",
     "ExtUtils::CBuilder" => "0.27",
-    "ExtUtils::MakeMaker" => "6.30",
+    "ExtUtils::MakeMaker" => 0,
     "File::Spec" => 0
   },
   "DISTNAME" => "Moose",
@@ -81,12 +77,13 @@ my %WriteMakefileArgs = (
     "Class::Load::XS" => "0.01",
     "Data::OptList" => "0.107",
     "Devel::GlobalDestruction" => 0,
-    "Devel::StackTrace" => "1.30",
+    "Devel::StackTrace" => "1.33",
     "Dist::CheckConflicts" => "0.02",
     "Eval::Closure" => "0.04",
     "List::MoreUtils" => "0.28",
     "MRO::Compat" => "0.05",
     "Module::Runtime" => "0.014",
+    "Module::Runtime::Conflicts" => 0,
     "Package::DeprecationManager" => "0.11",
     "Package::Stash" => "0.32",
     "Package::Stash::XS" => "0.24",
@@ -96,14 +93,21 @@ my %WriteMakefileArgs = (
     "Sub::Name" => "0.05",
     "Task::Weaken" => 0,
     "Try::Tiny" => "0.02",
-    "parent" => "0.223"
+    "parent" => "0.223",
+    "strict" => "1.03",
+    "warnings" => "1.03"
   },
   "TEST_REQUIRES" => {
+    "CPAN::Meta::Check" => "0.007",
+    "CPAN::Meta::Requirements" => 0,
+    "ExtUtils::MakeMaker" => 0,
+    "File::Spec" => 0,
+    "Test::CleanNamespaces" => "0.13",
     "Test::Fatal" => "0.001",
     "Test::More" => "0.88",
     "Test::Requires" => "0.05"
   },
-  "VERSION" => "2.1204",
+  "VERSION" => "2.1213",
   "XS" => {
     "xs/Attribute.xs" => "xs/Attribute.c",
     "xs/AttributeCore.xs" => "xs/AttributeCore.c",
@@ -127,19 +131,23 @@ 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",
   "Data::OptList" => "0.107",
   "Devel::GlobalDestruction" => 0,
-  "Devel::StackTrace" => "1.30",
+  "Devel::StackTrace" => "1.33",
   "Dist::CheckConflicts" => "0.02",
   "Eval::Closure" => "0.04",
+  "ExtUtils::MakeMaker" => 0,
+  "File::Spec" => 0,
   "List::MoreUtils" => "0.28",
   "MRO::Compat" => "0.05",
   "Module::Runtime" => "0.014",
+  "Module::Runtime::Conflicts" => 0,
   "Package::DeprecationManager" => "0.11",
   "Package::Stash" => "0.32",
   "Package::Stash::XS" => "0.24",
@@ -148,14 +156,16 @@ my %FallbackPrereqs = (
   "Sub::Exporter" => "0.980",
   "Sub::Name" => "0.05",
   "Task::Weaken" => 0,
+  "Test::CleanNamespaces" => "0.13",
   "Test::Fatal" => "0.001",
   "Test::More" => "0.88",
   "Test::Requires" => "0.05",
   "Try::Tiny" => "0.02",
-  "parent" => "0.223"
+  "parent" => "0.223",
+  "strict" => "1.03",
+  "warnings" => "1.03"
 );
 
-
 unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) {
   delete $WriteMakefileArgs{TEST_REQUIRES};
   delete $WriteMakefileArgs{BUILD_REQUIRES};
@@ -169,10 +179,6 @@ $WriteMakefileArgs{CCFLAGS} = ( $Config::Config{ccflags} || '' ) . ' -I.';
 
 WriteMakefile(%WriteMakefileArgs);
 
-
-
-
-
 {
 package MY;
 
@@ -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(
         },
     }
 );
-
@@ -4,6 +4,8 @@ use strict;
 use warnings;
 # PODNAME: moose-outdated
 
+# this script was generated with Dist::Zilla::Plugin::Conflicts 0.16
+
 use Getopt::Long;
 use Moose::Conflicts;
 
@@ -13,18 +13,25 @@ license = Perl_5
 copyright_holder = Infinity Interactive, Inc.
 copyright_year = 2006
 
-version = 2.1204
+version = 2.1213
 
 ; 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
+exclude_match = ^\.
 
 [PruneCruft]
 [ManifestSkip]  ; we have no MANIFEST.SKIP file, so this is a no-op
@@ -36,23 +43,21 @@ 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]
+:version = 5.010
+die_on_existing_version = 1
+die_on_line_insertion = 1
+
 [MetaConfig]
 
-[Authority]
-authority = cpan:STEVAN
+[=inc::SimpleAuthority]
 
 [MetaResources]
 bugtracker.web    = https://rt.cpan.org/Dist/Display.html?Name=Moose
@@ -64,10 +69,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 +111,7 @@ post_code_replacer = replace_with_nothing
 
 ; authordep Test::Inline
 ; authordep File::Find::Rule
+; authordep Test::Inline::Extract
 [=inc::ExtractInlineTests]
 
 [PromptIfStale]
@@ -107,15 +124,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 +183,8 @@ 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
+[=inc::CheckReleaseType]
+[CheckVersionIncrement]
 
 ; we would like to have this, but currently there are false negatives:
 ; https://rt.cpan.org/Ticket/Display.html?id=87883
@@ -164,6 +206,7 @@ Devel::GlobalDestruction    = 0
 Eval::Closure               = 0.04
 List::MoreUtils             = 0.28
 Module::Runtime             = 0.014
+Module::Runtime::Conflicts  = 0
 MRO::Compat                 = 0.05
 Package::DeprecationManager = 0.11
 Package::Stash              = 0.32
@@ -175,12 +218,15 @@ Sub::Name                   = 0.05
 Task::Weaken                = 0
 Try::Tiny                   = 0.02
 perl                        = 5.8.3
-Devel::StackTrace           = 1.30
+Devel::StackTrace           = 1.33
+strict                      = 1.03
+warnings                    = 1.03
 
 [Prereqs / TestRequires]
-Test::Fatal    = 0.001
-Test::More     = 0.88
-Test::Requires = 0.05
+Test::CleanNamespaces = 0.13
+Test::Fatal           = 0.001
+Test::More            = 0.88
+Test::Requires        = 0.05
 
 [Prereqs / ConfigureRequires]
 ExtUtils::CBuilder = 0.27
@@ -188,6 +234,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 +243,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,30 +254,29 @@ 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
 IO::String                   = 0
 Locale::US                   = 0
-Module::Info                 = 0
 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 +287,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.16
 -script = bin/moose-outdated
 Catalyst                       = 5.90049999
 Config::MVP                    = 2.200004
@@ -272,7 +317,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 +354,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 +372,7 @@ release_branch = stable/2.12
 [Git::Check]
 allow_dirty =
 
+[TestRelease]
 [ConfirmRelease]
 
 [Git::Commit]
@@ -336,7 +385,9 @@ tag_message = %v%t
 
 [Git::Push]
 
-[ContributorsFromGit]
+[UploadToCPAN]
+
+[Git::Contributors]
 
 ; authordep Class::Load
 ; authordep IPC::System::Simple
@@ -0,0 +1,37 @@
+package inc::CheckReleaseType;
+use Moose;
+with 'Dist::Zilla::Role::BeforeRelease';
+
+# this is so I don't accidentally release 2.x<odd>xx without the --trial
+# option, which has very nearly happened a few times.
+
+sub before_release
+{
+    my $self = shift;
+    my $version = $self->zilla->version;
+
+    $version =~ m/^\d\.\d{4}$/
+        or $self->log_fatal("version $version doesn't seem to conform to the normal specification!");
+
+    my $digit = substr($version, 3, 1);
+    if ($self->zilla->is_trial)
+    {
+        $digit % 2 == 1
+            or $self->log_fatal('-TRIAL releases must be numbered 2.x{ODD}xx!');
+    }
+    else
+    {
+        $digit % 2 == 0
+            or $self->log_fatal('stable releases must be numbered 2.x{EVEN}xx!');
+
+        # Moose::Manual::Support says:
+        # 2.x{EVEN}00 must be January, April, July, October only.
+        if (substr($version, -2, 2) eq '00')
+        {
+            # month is 0..11
+            my $month = (gmtime(time))[4];
+            $month % 3 == 0
+                or $self->log_fatal('2.x{EVEN}00 releases can only occur in January, April, July or October!');
+        }
+    }
+}
@@ -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,13 @@
+use strict;
+use warnings;
+package inc::SimpleAuthority;
+
+use Moose;
+with 'Dist::Zilla::Role::MetaProvider';
+
+sub metadata
+{
+    return +{ x_authority => 'cpan:STEVAN' };
+}
+
+1;
@@ -0,0 +1,34 @@
+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 {
+                # this is an awful hack and assumes ascii package names:
+                # please do not cargo-cult this code elsewhere. The proper
+                # thing to do is to crack open the file and read the pod name.
+                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,5 @@
-
 package Class::MOP::Attribute;
-BEGIN {
-  $Class::MOP::Attribute::AUTHORITY = 'cpan:STEVAN';
-}
-$Class::MOP::Attribute::VERSION = '2.1204';
+$Class::MOP::Attribute::VERSION = '2.1213';
 use strict;
 use warnings;
 
@@ -15,8 +11,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 +29,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 +54,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 +146,7 @@ sub initialize_instance_slot {
             );
         }
         else {
-            throw_exception( BuilderMethodNotSupportedForAttribute => attribute => $self,
+            $self->_throw_exception( BuilderMethodNotSupportedForAttribute => attribute => $self,
                                                                       instance  => $instance
                            );
         }
@@ -255,7 +249,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 +377,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 +414,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 +509,7 @@ Class::MOP::Attribute - Attribute Meta Object
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 SYNOPSIS
 
@@ -1,16 +1,11 @@
 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.1213';
 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 +17,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 +83,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 +107,7 @@ Class::MOP::Class::Immutable::Trait - Implements immutability for metaclass obje
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,5 @@
-
 package Class::MOP::Class;
-BEGIN {
-  $Class::MOP::Class::AUTHORITY = 'cpan:STEVAN';
-}
-$Class::MOP::Class::VERSION = '2.1204';
+$Class::MOP::Class::VERSION = '2.1213';
 use strict;
 use warnings;
 
@@ -24,8 +20,6 @@ use parent 'Class::MOP::Module',
          'Class::MOP::Mixin::HasAttributes',
          'Class::MOP::Mixin::HasMethods';
 
-use Moose::Util 'throw_exception';
-
 # Creation
 
 sub initialize {
@@ -41,7 +35,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 +70,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 +230,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 +257,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 +360,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 +376,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 +414,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 +505,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 +762,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 +776,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 +823,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 +840,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 +1057,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 +1082,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 +1092,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 +1102,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 +1126,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 +1155,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 +1172,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 +1333,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 +1471,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 +1525,7 @@ Class::MOP::Class - Class Meta Object
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 SYNOPSIS
 
@@ -1604,6 +1601,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
 
@@ -1,8 +1,5 @@
 package Class::MOP::Deprecated;
-BEGIN {
-  $Class::MOP::Deprecated::AUTHORITY = 'cpan:STEVAN';
-}
-$Class::MOP::Deprecated::VERSION = '2.1204';
+$Class::MOP::Deprecated::VERSION = '2.1213';
 use strict;
 use warnings;
 
@@ -26,7 +23,7 @@ Class::MOP::Deprecated - Manages deprecation warnings for Class::MOP
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,5 @@
-
 package Class::MOP::Instance;
-BEGIN {
-  $Class::MOP::Instance::AUTHORITY = 'cpan:STEVAN';
-}
-$Class::MOP::Instance::VERSION = '2.1204';
+$Class::MOP::Instance::VERSION = '2.1213';
 use strict;
 use warnings;
 
@@ -288,7 +284,7 @@ Class::MOP::Instance - Instance Meta Object
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,5 @@
-
 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.1213';
 use strict;
 use warnings;
 
@@ -13,29 +9,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 +120,7 @@ sub _generate_accessor_method_inline {
         ]);
     }
     catch {
-        throw_exception( CouldNotGenerateInlineAttributeMethod => instance => $self,
+        $self->_throw_exception( CouldNotGenerateInlineAttributeMethod => instance => $self,
                                                                   error    => $_,
                                                                   option   => "accessor"
                        );
@@ -139,9 +133,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 +151,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 +162,7 @@ sub _generate_reader_method_inline {
         ]);
     }
     catch {
-        throw_exception( CouldNotGenerateInlineAttributeMethod => instance => $self,
+        $self->_throw_exception( CouldNotGenerateInlineAttributeMethod => instance => $self,
                                                                   error    => $_,
                                                                   option   => "reader"
                        );
@@ -176,8 +170,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 +195,7 @@ sub _generate_writer_method_inline {
         ]);
     }
     catch {
-        throw_exception( CouldNotGenerateInlineAttributeMethod => instance => $self,
+        $self->_throw_exception( CouldNotGenerateInlineAttributeMethod => instance => $self,
                                                                   error    => $_,
                                                                   option   => "writer"
                        );
@@ -229,7 +223,7 @@ sub _generate_predicate_method_inline {
         ]);
     }
     catch {
-        throw_exception( CouldNotGenerateInlineAttributeMethod => instance => $self,
+        $self->_throw_exception( CouldNotGenerateInlineAttributeMethod => instance => $self,
                                                                   error    => $_,
                                                                   option   => "predicate"
                        );
@@ -257,7 +251,7 @@ sub _generate_clearer_method_inline {
         ]);
     }
     catch {
-        throw_exception( CouldNotGenerateInlineAttributeMethod => instance => $self,
+        $self->_throw_exception( CouldNotGenerateInlineAttributeMethod => instance => $self,
                                                                   error    => $_,
                                                                   option   => "clearer"
                        );
@@ -280,7 +274,7 @@ Class::MOP::Method::Accessor - Method Meta Object for accessors
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 SYNOPSIS
 
@@ -1,9 +1,5 @@
-
 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.1213';
 use strict;
 use warnings;
 
@@ -13,19 +9,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 +108,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 +133,7 @@ Class::MOP::Method::Constructor - Method Meta Object for constructors
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 SYNOPSIS
 
@@ -1,9 +1,5 @@
-
 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.1213';
 use strict;
 use warnings;
 
@@ -11,16 +7,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 +75,7 @@ Class::MOP::Method::Generated - Abstract base class for generated methods
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -121,7 +118,7 @@ Class::MOP::Method::Inlined - Method base class for methods which have been inli
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,5 @@
-
 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.1213';
 use strict;
 use warnings;
 
@@ -51,8 +47,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 +92,7 @@ Class::MOP::Method::Meta - Method Meta Object for C<meta> methods
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,5 @@
-
 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.1213';
 use strict;
 use warnings;
 
@@ -17,8 +13,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 +60,7 @@ Class::MOP::Method::Overload - Method Meta Object for methods which implement ov
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,5 @@
-
 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.1213';
 use strict;
 use warnings;
 
@@ -11,8 +7,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 +66,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 +210,7 @@ Class::MOP::Method::Wrapped - Method Meta Object for methods with before/after/a
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,5 @@
-
 package Class::MOP::Method;
-BEGIN {
-  $Class::MOP::Method::AUTHORITY = 'cpan:STEVAN';
-}
-$Class::MOP::Method::VERSION = '2.1204';
+$Class::MOP::Method::VERSION = '2.1213';
 use strict;
 use warnings;
 
@@ -26,7 +22,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 +29,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 +154,7 @@ Class::MOP::Method - Method Meta Object
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -213,7 +208,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 >>
 
@@ -1,8 +1,5 @@
 package Class::MOP::MiniTrait;
-BEGIN {
-  $Class::MOP::MiniTrait::AUTHORITY = 'cpan:STEVAN';
-}
-$Class::MOP::MiniTrait::VERSION = '2.1204';
+$Class::MOP::MiniTrait::VERSION = '2.1213';
 use strict;
 use warnings;
 
@@ -18,6 +15,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 +48,7 @@ Class::MOP::MiniTrait - Extremely limited trait application
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -64,7 +61,7 @@ Class::MOP::Mixin::AttributeCore - Core attributes shared by attribute metaclass
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -10,8 +7,6 @@ use Scalar::Util 'blessed';
 
 use parent 'Class::MOP::Mixin';
 
-use Moose::Util 'throw_exception';
-
 sub add_attribute {
     my $self = shift;
 
@@ -19,8 +14,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 +45,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 +54,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 +63,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 +106,7 @@ Class::MOP::Mixin::HasAttributes - Methods for metaclasses which have attributes
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -15,7 +12,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 +36,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 +48,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 +96,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 +108,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 +139,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 +333,7 @@ Class::MOP::Mixin::HasMethods - Methods for metaclasses which have methods
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,18 +1,21 @@
 package Class::MOP::Mixin;
-BEGIN {
-  $Class::MOP::Mixin::AUTHORITY = 'cpan:STEVAN';
-}
-$Class::MOP::Mixin::VERSION = '2.1204';
+$Class::MOP::Mixin::VERSION = '2.1213';
 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 +32,26 @@ Class::MOP::Mixin - Base class for mixin classes
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =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,5 @@
-
 package Class::MOP::Module;
-BEGIN {
-  $Class::MOP::Module::AUTHORITY = 'cpan:STEVAN';
-}
-$Class::MOP::Module::VERSION = '2.1204';
+$Class::MOP::Module::VERSION = '2.1213';
 use strict;
 use warnings;
 
@@ -12,8 +8,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 +70,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 +104,7 @@ Class::MOP::Module - Module Meta Object
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -140,6 +134,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,21 @@
-
 package Class::MOP::Object;
-BEGIN {
-  $Class::MOP::Object::AUTHORITY = 'cpan:STEVAN';
-}
-$Class::MOP::Object::VERSION = '2.1204';
+$Class::MOP::Object::VERSION = '2.1213';
 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 +63,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 +114,7 @@ Class::MOP::Object - Base class for metaclasses
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -148,8 +138,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,5 @@
-
 package Class::MOP::Package;
-BEGIN {
-  $Class::MOP::Package::AUTHORITY = 'cpan:STEVAN';
-}
-$Class::MOP::Package::VERSION = '2.1204';
+$Class::MOP::Package::VERSION = '2.1213';
 use strict;
 use warnings;
 
@@ -15,8 +11,6 @@ use Package::Stash;
 
 use parent 'Class::MOP::Object';
 
-use Moose::Util 'throw_exception';
-
 # creation ...
 
 sub initialize {
@@ -54,7 +48,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 +130,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 +283,7 @@ Class::MOP::Package - Package Meta Object
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,16 +1,11 @@
-
 package Class::MOP;
-BEGIN {
-  $Class::MOP::AUTHORITY = 'cpan:STEVAN';
-}
-$Class::MOP::VERSION = '2.1204';
+$Class::MOP::VERSION = '2.1213';
 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 +739,7 @@ Class::MOP - A Meta Object Protocol for Perl 5
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -4,6 +4,8 @@ package # hide from PAUSE
 use strict;
 use warnings;
 
+# this module was generated with Dist::Zilla::Plugin::Conflicts 0.16
+
 use Dist::CheckConflicts
     -dist      => 'Moose',
     -conflicts => {
@@ -34,7 +36,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,80 +72,39 @@ use Dist::CheckConflicts
         'Test::CleanNamespaces' => '0.03',
         'Test::Moose::More' => '0.022',
         'Test::TempDir' => '0.05',
+        'Throwable' => '0.102080',
         'namespace::autoclean' => '0.08',
     },
+    -also => [ qw(
+        Carp
+        Class::Load
+        Class::Load::XS
+        Data::OptList
+        Devel::GlobalDestruction
+        Devel::StackTrace
+        Dist::CheckConflicts
+        Eval::Closure
+        List::MoreUtils
+        MRO::Compat
+        Module::Runtime
+        Module::Runtime::Conflicts
+        Package::DeprecationManager
+        Package::Stash
+        Package::Stash::XS
+        Params::Util
+        Scalar::Util
+        Sub::Exporter
+        Sub::Name
+        Task::Weaken
+        Try::Tiny
+        parent
+        strict
+        warnings
+    ) ],
 
 ;
 
 1;
 
 # ABSTRACT: Provide information on conflicts for Moose
-
-__END__
-
-=pod
-
-=encoding UTF-8
-
-=head1 NAME
-
-Moose::Conflicts - Provide information on conflicts for Moose
-
-=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.
-
-=cut
+# Dist::Zilla: -PodWeaver
@@ -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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =head1 DESCRIPTION
 
@@ -1,8 +1,5 @@
 package Moose::Deprecated;
-BEGIN {
-  $Moose::Deprecated::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Deprecated::VERSION = '2.1204';
+$Moose::Deprecated::VERSION = '2.1213';
 use strict;
 use warnings;
 
@@ -29,7 +26,7 @@ Moose::Deprecated - Manages deprecation warnings for Moose
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,8 +1,5 @@
 package Moose::Exception::AccessorMustReadWrite;
-BEGIN {
-  $Moose::Exception::AccessorMustReadWrite::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::AccessorMustReadWrite::VERSION = '2.1204';
+$Moose::Exception::AccessorMustReadWrite::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::InvalidAttributeOptions';
@@ -1,8 +1,5 @@
 package Moose::Exception::AddParameterizableTypeTakesParameterizableType;
-BEGIN {
-  $Moose::Exception::AddParameterizableTypeTakesParameterizableType::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::AddParameterizableTypeTakesParameterizableType::VERSION = '2.1204';
+$Moose::Exception::AddParameterizableTypeTakesParameterizableType::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::AddRoleTakesAMooseMetaRoleInstance;
-BEGIN {
-  $Moose::Exception::AddRoleTakesAMooseMetaRoleInstance::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::AddRoleTakesAMooseMetaRoleInstance::VERSION = '2.1204';
+$Moose::Exception::AddRoleTakesAMooseMetaRoleInstance::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -1,8 +1,5 @@
 package Moose::Exception::AddRoleToARoleTakesAMooseMetaRole;
-BEGIN {
-  $Moose::Exception::AddRoleToARoleTakesAMooseMetaRole::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::AddRoleToARoleTakesAMooseMetaRole::VERSION = '2.1204';
+$Moose::Exception::AddRoleToARoleTakesAMooseMetaRole::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role';
@@ -1,8 +1,5 @@
 package Moose::Exception::ApplyTakesABlessedInstance;
-BEGIN {
-  $Moose::Exception::ApplyTakesABlessedInstance::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::ApplyTakesABlessedInstance::VERSION = '2.1204';
+$Moose::Exception::ApplyTakesABlessedInstance::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role';
@@ -1,8 +1,5 @@
 package Moose::Exception::AttachToClassNeedsAClassMOPClassInstanceOrASubclass;
-BEGIN {
-  $Moose::Exception::AttachToClassNeedsAClassMOPClassInstanceOrASubclass::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::AttachToClassNeedsAClassMOPClassInstanceOrASubclass::VERSION = '2.1204';
+$Moose::Exception::AttachToClassNeedsAClassMOPClassInstanceOrASubclass::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Attribute';
@@ -1,15 +1,12 @@
 package Moose::Exception::AttributeConflictInRoles;
-BEGIN {
-  $Moose::Exception::AttributeConflictInRoles::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::AttributeConflictInRoles::VERSION = '2.1204';
+$Moose::Exception::AttributeConflictInRoles::VERSION = '2.1213';
 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 +17,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;
@@ -1,23 +1,20 @@
 package Moose::Exception::AttributeConflictInSummation;
-BEGIN {
-  $Moose::Exception::AttributeConflictInSummation::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::AttributeConflictInSummation::VERSION = '2.1204';
+$Moose::Exception::AttributeConflictInSummation::VERSION = '2.1213';
 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'"
@@ -1,8 +1,5 @@
 package Moose::Exception::AttributeExtensionIsNotSupportedInRoles;
-BEGIN {
-  $Moose::Exception::AttributeExtensionIsNotSupportedInRoles::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::AttributeExtensionIsNotSupportedInRoles::VERSION = '2.1204';
+$Moose::Exception::AttributeExtensionIsNotSupportedInRoles::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role';
@@ -1,25 +1,16 @@
 package Moose::Exception::AttributeIsRequired;
-BEGIN {
-  $Moose::Exception::AttributeIsRequired::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::AttributeIsRequired::VERSION = '2.1204';
+$Moose::Exception::AttributeIsRequired::VERSION = '2.1213';
 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 +19,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";
@@ -1,8 +1,5 @@
 package Moose::Exception::AttributeMustBeAnClassMOPMixinAttributeCoreOrSubclass;
-BEGIN {
-  $Moose::Exception::AttributeMustBeAnClassMOPMixinAttributeCoreOrSubclass::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::AttributeMustBeAnClassMOPMixinAttributeCoreOrSubclass::VERSION = '2.1204';
+$Moose::Exception::AttributeMustBeAnClassMOPMixinAttributeCoreOrSubclass::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -1,8 +1,5 @@
 package Moose::Exception::AttributeNamesDoNotMatch;
-BEGIN {
-  $Moose::Exception::AttributeNamesDoNotMatch::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::AttributeNamesDoNotMatch::VERSION = '2.1204';
+$Moose::Exception::AttributeNamesDoNotMatch::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::AttributeValueIsNotAnObject;
-BEGIN {
-  $Moose::Exception::AttributeValueIsNotAnObject::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::AttributeValueIsNotAnObject::VERSION = '2.1204';
+$Moose::Exception::AttributeValueIsNotAnObject::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Instance', 'Moose::Exception::Role::Attribute';
@@ -1,8 +1,5 @@
 package Moose::Exception::AttributeValueIsNotDefined;
-BEGIN {
-  $Moose::Exception::AttributeValueIsNotDefined::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::AttributeValueIsNotDefined::VERSION = '2.1204';
+$Moose::Exception::AttributeValueIsNotDefined::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Instance', 'Moose::Exception::Role::Attribute';
@@ -1,8 +1,5 @@
 package Moose::Exception::AutoDeRefNeedsArrayRefOrHashRef;
-BEGIN {
-  $Moose::Exception::AutoDeRefNeedsArrayRefOrHashRef::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::AutoDeRefNeedsArrayRefOrHashRef::VERSION = '2.1204';
+$Moose::Exception::AutoDeRefNeedsArrayRefOrHashRef::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::InvalidAttributeOptions';
@@ -1,8 +1,5 @@
 package Moose::Exception::BadOptionFormat;
-BEGIN {
-  $Moose::Exception::BadOptionFormat::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::BadOptionFormat::VERSION = '2.1204';
+$Moose::Exception::BadOptionFormat::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Attribute';
@@ -1,8 +1,5 @@
 package Moose::Exception::BothBuilderAndDefaultAreNotAllowed;
-BEGIN {
-  $Moose::Exception::BothBuilderAndDefaultAreNotAllowed::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::BothBuilderAndDefaultAreNotAllowed::VERSION = '2.1204';
+$Moose::Exception::BothBuilderAndDefaultAreNotAllowed::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -1,8 +1,5 @@
 package Moose::Exception::BuilderDoesNotExist;
-BEGIN {
-  $Moose::Exception::BuilderDoesNotExist::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::BuilderDoesNotExist::VERSION = '2.1204';
+$Moose::Exception::BuilderDoesNotExist::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Attribute', 'Moose::Exception::Role::Instance';
@@ -1,8 +1,5 @@
 package Moose::Exception::BuilderMethodNotSupportedForAttribute;
-BEGIN {
-  $Moose::Exception::BuilderMethodNotSupportedForAttribute::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::BuilderMethodNotSupportedForAttribute::VERSION = '2.1204';
+$Moose::Exception::BuilderMethodNotSupportedForAttribute::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Attribute', 'Moose::Exception::Role::Instance';
@@ -1,8 +1,5 @@
 package Moose::Exception::BuilderMethodNotSupportedForInlineAttribute;
-BEGIN {
-  $Moose::Exception::BuilderMethodNotSupportedForInlineAttribute::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::BuilderMethodNotSupportedForInlineAttribute::VERSION = '2.1204';
+$Moose::Exception::BuilderMethodNotSupportedForInlineAttribute::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Instance', 'Moose::Exception::Role::Class';
@@ -1,8 +1,5 @@
 package Moose::Exception::BuilderMustBeAMethodName;
-BEGIN {
-  $Moose::Exception::BuilderMustBeAMethodName::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::BuilderMustBeAMethodName::VERSION = '2.1204';
+$Moose::Exception::BuilderMustBeAMethodName::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -1,8 +1,5 @@
 package Moose::Exception::CallingMethodOnAnImmutableInstance;
-BEGIN {
-  $Moose::Exception::CallingMethodOnAnImmutableInstance::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CallingMethodOnAnImmutableInstance::VERSION = '2.1204';
+$Moose::Exception::CallingMethodOnAnImmutableInstance::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::CallingReadOnlyMethodOnAnImmutableInstance;
-BEGIN {
-  $Moose::Exception::CallingReadOnlyMethodOnAnImmutableInstance::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CallingReadOnlyMethodOnAnImmutableInstance::VERSION = '2.1204';
+$Moose::Exception::CallingReadOnlyMethodOnAnImmutableInstance::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,20 +1,13 @@
 package Moose::Exception::CanExtendOnlyClasses;
-BEGIN {
-  $Moose::Exception::CanExtendOnlyClasses::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CanExtendOnlyClasses::VERSION = '2.1204';
+$Moose::Exception::CanExtendOnlyClasses::VERSION = '2.1213';
 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;
@@ -1,8 +1,5 @@
 package Moose::Exception::CanOnlyConsumeRole;
-BEGIN {
-  $Moose::Exception::CanOnlyConsumeRole::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CanOnlyConsumeRole::VERSION = '2.1204';
+$Moose::Exception::CanOnlyConsumeRole::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::CanOnlyWrapBlessedCode;
-BEGIN {
-  $Moose::Exception::CanOnlyWrapBlessedCode::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CanOnlyWrapBlessedCode::VERSION = '2.1204';
+$Moose::Exception::CanOnlyWrapBlessedCode::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -1,15 +1,13 @@
 package Moose::Exception::CanReblessOnlyIntoASubclass;
-BEGIN {
-  $Moose::Exception::CanReblessOnlyIntoASubclass::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CanReblessOnlyIntoASubclass::VERSION = '2.1204';
+$Moose::Exception::CanReblessOnlyIntoASubclass::VERSION = '2.1213';
 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;
@@ -1,15 +1,12 @@
 package Moose::Exception::CanReblessOnlyIntoASuperclass;
-BEGIN {
-  $Moose::Exception::CanReblessOnlyIntoASuperclass::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CanReblessOnlyIntoASuperclass::VERSION = '2.1204';
+$Moose::Exception::CanReblessOnlyIntoASuperclass::VERSION = '2.1213';
 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;
@@ -1,8 +1,5 @@
 package Moose::Exception::CannotAddAdditionalTypeCoercionsToUnion;
-BEGIN {
-  $Moose::Exception::CannotAddAdditionalTypeCoercionsToUnion::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotAddAdditionalTypeCoercionsToUnion::VERSION = '2.1204';
+$Moose::Exception::CannotAddAdditionalTypeCoercionsToUnion::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::CannotAddAsAnAttributeToARole;
-BEGIN {
-  $Moose::Exception::CannotAddAsAnAttributeToARole::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotAddAsAnAttributeToARole::VERSION = '2.1204';
+$Moose::Exception::CannotAddAsAnAttributeToARole::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role';
@@ -1,8 +1,5 @@
 package Moose::Exception::CannotApplyBaseClassRolesToRole;
-BEGIN {
-  $Moose::Exception::CannotApplyBaseClassRolesToRole::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotApplyBaseClassRolesToRole::VERSION = '2.1204';
+$Moose::Exception::CannotApplyBaseClassRolesToRole::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash', 'Moose::Exception::Role::Role';
@@ -1,8 +1,5 @@
 package Moose::Exception::CannotAssignValueToReadOnlyAccessor;
-BEGIN {
-  $Moose::Exception::CannotAssignValueToReadOnlyAccessor::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotAssignValueToReadOnlyAccessor::VERSION = '2.1204';
+$Moose::Exception::CannotAssignValueToReadOnlyAccessor::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class', 'Moose::Exception::Role::EitherAttributeOrAttributeName';
@@ -1,8 +1,5 @@
 package Moose::Exception::CannotAugmentIfLocalMethodPresent;
-BEGIN {
-  $Moose::Exception::CannotAugmentIfLocalMethodPresent::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotAugmentIfLocalMethodPresent::VERSION = '2.1204';
+$Moose::Exception::CannotAugmentIfLocalMethodPresent::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class', 'Moose::Exception::Role::Method';
@@ -1,8 +1,5 @@
 package Moose::Exception::CannotAugmentNoSuperMethod;
-BEGIN {
-  $Moose::Exception::CannotAugmentNoSuperMethod::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotAugmentNoSuperMethod::VERSION = '2.1204';
+$Moose::Exception::CannotAugmentNoSuperMethod::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -1,8 +1,5 @@
 package Moose::Exception::CannotAutoDerefWithoutIsa;
-BEGIN {
-  $Moose::Exception::CannotAutoDerefWithoutIsa::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotAutoDerefWithoutIsa::VERSION = '2.1204';
+$Moose::Exception::CannotAutoDerefWithoutIsa::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::InvalidAttributeOptions';
@@ -1,8 +1,5 @@
 package Moose::Exception::CannotAutoDereferenceTypeConstraint;
-BEGIN {
-  $Moose::Exception::CannotAutoDereferenceTypeConstraint::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotAutoDereferenceTypeConstraint::VERSION = '2.1204';
+$Moose::Exception::CannotAutoDereferenceTypeConstraint::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Attribute', 'Moose::Exception::Role::Instance', 'Moose::Exception::Role::TypeConstraint';
@@ -1,8 +1,5 @@
 package Moose::Exception::CannotCalculateNativeType;
-BEGIN {
-  $Moose::Exception::CannotCalculateNativeType::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotCalculateNativeType::VERSION = '2.1204';
+$Moose::Exception::CannotCalculateNativeType::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Instance';
@@ -1,8 +1,5 @@
 package Moose::Exception::CannotCallAnAbstractBaseMethod;
-BEGIN {
-  $Moose::Exception::CannotCallAnAbstractBaseMethod::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotCallAnAbstractBaseMethod::VERSION = '2.1204';
+$Moose::Exception::CannotCallAnAbstractBaseMethod::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::CannotCallAnAbstractMethod;
-BEGIN {
-  $Moose::Exception::CannotCallAnAbstractMethod::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotCallAnAbstractMethod::VERSION = '2.1204';
+$Moose::Exception::CannotCallAnAbstractMethod::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::CannotCoerceAWeakRef;
-BEGIN {
-  $Moose::Exception::CannotCoerceAWeakRef::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotCoerceAWeakRef::VERSION = '2.1204';
+$Moose::Exception::CannotCoerceAWeakRef::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::InvalidAttributeOptions';
@@ -1,8 +1,5 @@
 package Moose::Exception::CannotCoerceAttributeWhichHasNoCoercion;
-BEGIN {
-  $Moose::Exception::CannotCoerceAttributeWhichHasNoCoercion::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotCoerceAttributeWhichHasNoCoercion::VERSION = '2.1204';
+$Moose::Exception::CannotCoerceAttributeWhichHasNoCoercion::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::InvalidAttributeOptions', 'Moose::Exception::Role::TypeConstraint';
@@ -1,8 +1,5 @@
 package Moose::Exception::CannotCreateHigherOrderTypeWithoutATypeParameter;
-BEGIN {
-  $Moose::Exception::CannotCreateHigherOrderTypeWithoutATypeParameter::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotCreateHigherOrderTypeWithoutATypeParameter::VERSION = '2.1204';
+$Moose::Exception::CannotCreateHigherOrderTypeWithoutATypeParameter::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::TypeConstraint';
@@ -1,15 +1,12 @@
 package Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresent;
-BEGIN {
-  $Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresent::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresent::VERSION = '2.1204';
+$Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresent::VERSION = '2.1213';
 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
 );
 
@@ -1,8 +1,5 @@
 package Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresentInClass;
-BEGIN {
-  $Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresentInClass::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresentInClass::VERSION = '2.1204';
+$Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresentInClass::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role', 'Moose::Exception::Role::Method', 'Moose::Exception::Role::Class';
@@ -1,8 +1,5 @@
 package Moose::Exception::CannotDelegateLocalMethodIsPresent;
-BEGIN {
-  $Moose::Exception::CannotDelegateLocalMethodIsPresent::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotDelegateLocalMethodIsPresent::VERSION = '2.1204';
+$Moose::Exception::CannotDelegateLocalMethodIsPresent::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Attribute', 'Moose::Exception::Role::Method';
@@ -1,8 +1,5 @@
 package Moose::Exception::CannotDelegateWithoutIsa;
-BEGIN {
-  $Moose::Exception::CannotDelegateWithoutIsa::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotDelegateWithoutIsa::VERSION = '2.1204';
+$Moose::Exception::CannotDelegateWithoutIsa::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Attribute';
@@ -1,8 +1,5 @@
 package Moose::Exception::CannotFindDelegateMetaclass;
-BEGIN {
-  $Moose::Exception::CannotFindDelegateMetaclass::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotFindDelegateMetaclass::VERSION = '2.1204';
+$Moose::Exception::CannotFindDelegateMetaclass::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Attribute';
@@ -1,8 +1,5 @@
 package Moose::Exception::CannotFindType;
-BEGIN {
-  $Moose::Exception::CannotFindType::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotFindType::VERSION = '2.1204';
+$Moose::Exception::CannotFindType::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::CannotFindTypeGivenToMatchOnType;
-BEGIN {
-  $Moose::Exception::CannotFindTypeGivenToMatchOnType::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotFindTypeGivenToMatchOnType::VERSION = '2.1204';
+$Moose::Exception::CannotFindTypeGivenToMatchOnType::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::CannotFixMetaclassCompatibility;
-BEGIN {
-  $Moose::Exception::CannotFixMetaclassCompatibility::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotFixMetaclassCompatibility::VERSION = '2.1204';
+$Moose::Exception::CannotFixMetaclassCompatibility::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -1,16 +1,15 @@
 package Moose::Exception::CannotGenerateInlineConstraint;
-BEGIN {
-  $Moose::Exception::CannotGenerateInlineConstraint::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotGenerateInlineConstraint::VERSION = '2.1204';
+$Moose::Exception::CannotGenerateInlineConstraint::VERSION = '2.1213';
 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 +20,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";
 }
@@ -1,8 +1,5 @@
 package Moose::Exception::CannotInitializeMooseMetaRoleComposite;
-BEGIN {
-  $Moose::Exception::CannotInitializeMooseMetaRoleComposite::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotInitializeMooseMetaRoleComposite::VERSION = '2.1204';
+$Moose::Exception::CannotInitializeMooseMetaRoleComposite::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::CannotInlineTypeConstraintCheck;
-BEGIN {
-  $Moose::Exception::CannotInlineTypeConstraintCheck::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotInlineTypeConstraintCheck::VERSION = '2.1204';
+$Moose::Exception::CannotInlineTypeConstraintCheck::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::TypeConstraint';
@@ -1,11 +1,8 @@
 package Moose::Exception::CannotLocatePackageInINC;
-BEGIN {
-  $Moose::Exception::CannotLocatePackageInINC::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotLocatePackageInINC::VERSION = '2.1204';
+$Moose::Exception::CannotLocatePackageInINC::VERSION = '2.1213';
 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 +22,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;
@@ -1,8 +1,5 @@
 package Moose::Exception::CannotMakeMetaclassCompatible;
-BEGIN {
-  $Moose::Exception::CannotMakeMetaclassCompatible::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotMakeMetaclassCompatible::VERSION = '2.1204';
+$Moose::Exception::CannotMakeMetaclassCompatible::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -1,8 +1,5 @@
 package Moose::Exception::CannotOverrideALocalMethod;
-BEGIN {
-  $Moose::Exception::CannotOverrideALocalMethod::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotOverrideALocalMethod::VERSION = '2.1204';
+$Moose::Exception::CannotOverrideALocalMethod::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role';
@@ -1,8 +1,5 @@
 package Moose::Exception::CannotOverrideBodyOfMetaMethods;
-BEGIN {
-  $Moose::Exception::CannotOverrideBodyOfMetaMethods::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotOverrideBodyOfMetaMethods::VERSION = '2.1204';
+$Moose::Exception::CannotOverrideBodyOfMetaMethods::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -1,8 +1,5 @@
 package Moose::Exception::CannotOverrideLocalMethodIsPresent;
-BEGIN {
-  $Moose::Exception::CannotOverrideLocalMethodIsPresent::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotOverrideLocalMethodIsPresent::VERSION = '2.1204';
+$Moose::Exception::CannotOverrideLocalMethodIsPresent::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class', 'Moose::Exception::Role::Method';
@@ -1,8 +1,5 @@
 package Moose::Exception::CannotOverrideNoSuperMethod;
-BEGIN {
-  $Moose::Exception::CannotOverrideNoSuperMethod::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotOverrideNoSuperMethod::VERSION = '2.1204';
+$Moose::Exception::CannotOverrideNoSuperMethod::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -1,11 +1,7 @@
 package Moose::Exception::CannotRegisterUnnamedTypeConstraint;
-BEGIN {
-  $Moose::Exception::CannotRegisterUnnamedTypeConstraint::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotRegisterUnnamedTypeConstraint::VERSION = '2.1204';
+$Moose::Exception::CannotRegisterUnnamedTypeConstraint::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
-with 'Moose::Exception::Role::TypeConstraint';
 
 sub _build_message {
     "can't register an unnamed type constraint";
@@ -1,8 +1,5 @@
 package Moose::Exception::CannotUseLazyBuildAndDefaultSimultaneously;
-BEGIN {
-  $Moose::Exception::CannotUseLazyBuildAndDefaultSimultaneously::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CannotUseLazyBuildAndDefaultSimultaneously::VERSION = '2.1204';
+$Moose::Exception::CannotUseLazyBuildAndDefaultSimultaneously::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::InvalidAttributeOptions';
@@ -1,8 +1,5 @@
 package Moose::Exception::CircularReferenceInAlso;
-BEGIN {
-  $Moose::Exception::CircularReferenceInAlso::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CircularReferenceInAlso::VERSION = '2.1204';
+$Moose::Exception::CircularReferenceInAlso::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::ClassDoesNotHaveInitMeta;
-BEGIN {
-  $Moose::Exception::ClassDoesNotHaveInitMeta::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::ClassDoesNotHaveInitMeta::VERSION = '2.1204';
+$Moose::Exception::ClassDoesNotHaveInitMeta::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -1,21 +1,20 @@
 package Moose::Exception::ClassDoesTheExcludedRole;
-BEGIN {
-  $Moose::Exception::ClassDoesTheExcludedRole::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::ClassDoesTheExcludedRole::VERSION = '2.1204';
+$Moose::Exception::ClassDoesTheExcludedRole::VERSION = '2.1213';
 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;
@@ -1,8 +1,5 @@
 package Moose::Exception::ClassNamesDoNotMatch;
-BEGIN {
-  $Moose::Exception::ClassNamesDoNotMatch::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::ClassNamesDoNotMatch::VERSION = '2.1204';
+$Moose::Exception::ClassNamesDoNotMatch::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::CloneObjectExpectsAnInstanceOfMetaclass;
-BEGIN {
-  $Moose::Exception::CloneObjectExpectsAnInstanceOfMetaclass::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CloneObjectExpectsAnInstanceOfMetaclass::VERSION = '2.1204';
+$Moose::Exception::CloneObjectExpectsAnInstanceOfMetaclass::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -15,7 +12,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;
@@ -1,8 +1,5 @@
 package Moose::Exception::CodeBlockMustBeACodeRef;
-BEGIN {
-  $Moose::Exception::CodeBlockMustBeACodeRef::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CodeBlockMustBeACodeRef::VERSION = '2.1204';
+$Moose::Exception::CodeBlockMustBeACodeRef::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash', 'Moose::Exception::Role::Instance';
@@ -1,16 +1,8 @@
 package Moose::Exception::CoercingWithoutCoercions;
-BEGIN {
-  $Moose::Exception::CoercingWithoutCoercions::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CoercingWithoutCoercions::VERSION = '2.1204';
+$Moose::Exception::CoercingWithoutCoercions::VERSION = '2.1213';
 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;
@@ -1,8 +1,5 @@
 package Moose::Exception::CoercionAlreadyExists;
-BEGIN {
-  $Moose::Exception::CoercionAlreadyExists::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CoercionAlreadyExists::VERSION = '2.1204';
+$Moose::Exception::CoercionAlreadyExists::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Instance';
@@ -1,8 +1,5 @@
 package Moose::Exception::CoercionNeedsTypeConstraint;
-BEGIN {
-  $Moose::Exception::CoercionNeedsTypeConstraint::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CoercionNeedsTypeConstraint::VERSION = '2.1204';
+$Moose::Exception::CoercionNeedsTypeConstraint::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::InvalidAttributeOptions';
@@ -1,21 +1,20 @@
 package Moose::Exception::ConflictDetectedInCheckRoleExclusions;
-BEGIN {
-  $Moose::Exception::ConflictDetectedInCheckRoleExclusions::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::ConflictDetectedInCheckRoleExclusions::VERSION = '2.1204';
+$Moose::Exception::ConflictDetectedInCheckRoleExclusions::VERSION = '2.1213';
 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;
@@ -1,15 +1,14 @@
 package Moose::Exception::ConflictDetectedInCheckRoleExclusionsInToClass;
-BEGIN {
-  $Moose::Exception::ConflictDetectedInCheckRoleExclusionsInToClass::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::ConflictDetectedInCheckRoleExclusionsInToClass::VERSION = '2.1204';
+$Moose::Exception::ConflictDetectedInCheckRoleExclusionsInToClass::VERSION = '2.1213';
 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;
@@ -1,8 +1,5 @@
 package Moose::Exception::ConstructClassInstanceTakesPackageName;
-BEGIN {
-  $Moose::Exception::ConstructClassInstanceTakesPackageName::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::ConstructClassInstanceTakesPackageName::VERSION = '2.1204';
+$Moose::Exception::ConstructClassInstanceTakesPackageName::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::CouldNotCreateMethod;
-BEGIN {
-  $Moose::Exception::CouldNotCreateMethod::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CouldNotCreateMethod::VERSION = '2.1204';
+$Moose::Exception::CouldNotCreateMethod::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Attribute';
@@ -1,8 +1,5 @@
 package Moose::Exception::CouldNotCreateWriter;
-BEGIN {
-  $Moose::Exception::CouldNotCreateWriter::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CouldNotCreateWriter::VERSION = '2.1204';
+$Moose::Exception::CouldNotCreateWriter::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::EitherAttributeOrAttributeName', 'Moose::Exception::Role::Instance';
@@ -1,8 +1,5 @@
 package Moose::Exception::CouldNotEvalConstructor;
-BEGIN {
-  $Moose::Exception::CouldNotEvalConstructor::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CouldNotEvalConstructor::VERSION = '2.1204';
+$Moose::Exception::CouldNotEvalConstructor::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::CouldNotEvalDestructor;
-BEGIN {
-  $Moose::Exception::CouldNotEvalDestructor::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CouldNotEvalDestructor::VERSION = '2.1204';
+$Moose::Exception::CouldNotEvalDestructor::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::CouldNotFindTypeConstraintToCoerceFrom;
-BEGIN {
-  $Moose::Exception::CouldNotFindTypeConstraintToCoerceFrom::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CouldNotFindTypeConstraintToCoerceFrom::VERSION = '2.1204';
+$Moose::Exception::CouldNotFindTypeConstraintToCoerceFrom::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Instance';
@@ -1,8 +1,5 @@
 package Moose::Exception::CouldNotGenerateInlineAttributeMethod;
-BEGIN {
-  $Moose::Exception::CouldNotGenerateInlineAttributeMethod::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CouldNotGenerateInlineAttributeMethod::VERSION = '2.1204';
+$Moose::Exception::CouldNotGenerateInlineAttributeMethod::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Instance';
@@ -1,8 +1,5 @@
 package Moose::Exception::CouldNotLocateTypeConstraintForUnion;
-BEGIN {
-  $Moose::Exception::CouldNotLocateTypeConstraintForUnion::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CouldNotLocateTypeConstraintForUnion::VERSION = '2.1204';
+$Moose::Exception::CouldNotLocateTypeConstraintForUnion::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::TypeConstraint';
@@ -1,8 +1,5 @@
 package Moose::Exception::CouldNotParseType;
-BEGIN {
-  $Moose::Exception::CouldNotParseType::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CouldNotParseType::VERSION = '2.1204';
+$Moose::Exception::CouldNotParseType::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::CreateMOPClassTakesArrayRefOfAttributes;
-BEGIN {
-  $Moose::Exception::CreateMOPClassTakesArrayRefOfAttributes::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CreateMOPClassTakesArrayRefOfAttributes::VERSION = '2.1204';
+$Moose::Exception::CreateMOPClassTakesArrayRefOfAttributes::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::RoleForCreateMOPClass';
@@ -1,8 +1,5 @@
 package Moose::Exception::CreateMOPClassTakesArrayRefOfSuperclasses;
-BEGIN {
-  $Moose::Exception::CreateMOPClassTakesArrayRefOfSuperclasses::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CreateMOPClassTakesArrayRefOfSuperclasses::VERSION = '2.1204';
+$Moose::Exception::CreateMOPClassTakesArrayRefOfSuperclasses::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::RoleForCreateMOPClass';
@@ -1,8 +1,5 @@
 package Moose::Exception::CreateMOPClassTakesHashRefOfMethods;
-BEGIN {
-  $Moose::Exception::CreateMOPClassTakesHashRefOfMethods::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CreateMOPClassTakesHashRefOfMethods::VERSION = '2.1204';
+$Moose::Exception::CreateMOPClassTakesHashRefOfMethods::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::RoleForCreateMOPClass';
@@ -1,8 +1,5 @@
 package Moose::Exception::CreateTakesArrayRefOfRoles;
-BEGIN {
-  $Moose::Exception::CreateTakesArrayRefOfRoles::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CreateTakesArrayRefOfRoles::VERSION = '2.1204';
+$Moose::Exception::CreateTakesArrayRefOfRoles::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::RoleForCreate';
@@ -12,4 +9,3 @@ sub _build_message {
 }
 
 1;
-
@@ -1,8 +1,5 @@
 package Moose::Exception::CreateTakesHashRefOfAttributes;
-BEGIN {
-  $Moose::Exception::CreateTakesHashRefOfAttributes::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CreateTakesHashRefOfAttributes::VERSION = '2.1204';
+$Moose::Exception::CreateTakesHashRefOfAttributes::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::RoleForCreate';
@@ -1,8 +1,5 @@
 package Moose::Exception::CreateTakesHashRefOfMethods;
-BEGIN {
-  $Moose::Exception::CreateTakesHashRefOfMethods::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::CreateTakesHashRefOfMethods::VERSION = '2.1204';
+$Moose::Exception::CreateTakesHashRefOfMethods::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::RoleForCreate';
@@ -1,8 +1,5 @@
 package Moose::Exception::DefaultToMatchOnTypeMustBeCodeRef;
-BEGIN {
-  $Moose::Exception::DefaultToMatchOnTypeMustBeCodeRef::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::DefaultToMatchOnTypeMustBeCodeRef::VERSION = '2.1204';
+$Moose::Exception::DefaultToMatchOnTypeMustBeCodeRef::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::DelegationToAClassWhichIsNotLoaded;
-BEGIN {
-  $Moose::Exception::DelegationToAClassWhichIsNotLoaded::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::DelegationToAClassWhichIsNotLoaded::VERSION = '2.1204';
+$Moose::Exception::DelegationToAClassWhichIsNotLoaded::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Attribute';
@@ -1,8 +1,5 @@
 package Moose::Exception::DelegationToARoleWhichIsNotLoaded;
-BEGIN {
-  $Moose::Exception::DelegationToARoleWhichIsNotLoaded::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::DelegationToARoleWhichIsNotLoaded::VERSION = '2.1204';
+$Moose::Exception::DelegationToARoleWhichIsNotLoaded::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Attribute';
@@ -1,8 +1,5 @@
 package Moose::Exception::DelegationToATypeWhichIsNotAClass;
-BEGIN {
-  $Moose::Exception::DelegationToATypeWhichIsNotAClass::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::DelegationToATypeWhichIsNotAClass::VERSION = '2.1204';
+$Moose::Exception::DelegationToATypeWhichIsNotAClass::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Attribute';
@@ -1,16 +1,8 @@
 package Moose::Exception::DoesRequiresRoleName;
-BEGIN {
-  $Moose::Exception::DoesRequiresRoleName::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::DoesRequiresRoleName::VERSION = '2.1204';
+$Moose::Exception::DoesRequiresRoleName::VERSION = '2.1213';
 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()";
@@ -1,8 +1,5 @@
 package Moose::Exception::EnumCalledWithAnArrayRefAndAdditionalArgs;
-BEGIN {
-  $Moose::Exception::EnumCalledWithAnArrayRefAndAdditionalArgs::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::EnumCalledWithAnArrayRefAndAdditionalArgs::VERSION = '2.1204';
+$Moose::Exception::EnumCalledWithAnArrayRefAndAdditionalArgs::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::EnumValuesMustBeString;
-BEGIN {
-  $Moose::Exception::EnumValuesMustBeString::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::EnumValuesMustBeString::VERSION = '2.1204';
+$Moose::Exception::EnumValuesMustBeString::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -1,8 +1,5 @@
 package Moose::Exception::ExtendsMissingArgs;
-BEGIN {
-  $Moose::Exception::ExtendsMissingArgs::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::ExtendsMissingArgs::VERSION = '2.1204';
+$Moose::Exception::ExtendsMissingArgs::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -1,8 +1,5 @@
 package Moose::Exception::HandlesMustBeAHashRef;
-BEGIN {
-  $Moose::Exception::HandlesMustBeAHashRef::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::HandlesMustBeAHashRef::VERSION = '2.1204';
+$Moose::Exception::HandlesMustBeAHashRef::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Instance';
@@ -1,8 +1,5 @@
 package Moose::Exception::IllegalInheritedOptions;
-BEGIN {
-  $Moose::Exception::IllegalInheritedOptions::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::IllegalInheritedOptions::VERSION = '2.1204';
+$Moose::Exception::IllegalInheritedOptions::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -1,8 +1,5 @@
 package Moose::Exception::IllegalMethodTypeToAddMethodModifier;
-BEGIN {
-  $Moose::Exception::IllegalMethodTypeToAddMethodModifier::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::IllegalMethodTypeToAddMethodModifier::VERSION = '2.1204';
+$Moose::Exception::IllegalMethodTypeToAddMethodModifier::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,27 +1,23 @@
-
 package Moose::Exception::IncompatibleMetaclassOfSuperclass;
-BEGIN {
-  $Moose::Exception::IncompatibleMetaclassOfSuperclass::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::IncompatibleMetaclassOfSuperclass::VERSION = '2.1204';
+$Moose::Exception::IncompatibleMetaclassOfSuperclass::VERSION = '2.1213';
 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)";
 }
@@ -1,8 +1,5 @@
 package Moose::Exception::InitMetaRequiresClass;
-BEGIN {
-  $Moose::Exception::InitMetaRequiresClass::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::InitMetaRequiresClass::VERSION = '2.1204';
+$Moose::Exception::InitMetaRequiresClass::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -1,8 +1,5 @@
 package Moose::Exception::InitializeTakesUnBlessedPackageName;
-BEGIN {
-  $Moose::Exception::InitializeTakesUnBlessedPackageName::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::InitializeTakesUnBlessedPackageName::VERSION = '2.1204';
+$Moose::Exception::InitializeTakesUnBlessedPackageName::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,15 +1,12 @@
 package Moose::Exception::InstanceBlessedIntoWrongClass;
-BEGIN {
-  $Moose::Exception::InstanceBlessedIntoWrongClass::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::InstanceBlessedIntoWrongClass::VERSION = '2.1204';
+$Moose::Exception::InstanceBlessedIntoWrongClass::VERSION = '2.1213';
 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;
@@ -1,8 +1,5 @@
 package Moose::Exception::InstanceMustBeABlessedReference;
-BEGIN {
-  $Moose::Exception::InstanceMustBeABlessedReference::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::InstanceMustBeABlessedReference::VERSION = '2.1204';
+$Moose::Exception::InstanceMustBeABlessedReference::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash', 'Moose::Exception::Role::Class';
@@ -1,8 +1,5 @@
 package Moose::Exception::InvalidArgPassedToMooseUtilMetaRole;
-BEGIN {
-  $Moose::Exception::InvalidArgPassedToMooseUtilMetaRole::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::InvalidArgPassedToMooseUtilMetaRole::VERSION = '2.1204';
+$Moose::Exception::InvalidArgPassedToMooseUtilMetaRole::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::InvalidArgumentToMethod;
-BEGIN {
-  $Moose::Exception::InvalidArgumentToMethod::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::InvalidArgumentToMethod::VERSION = '2.1204';
+$Moose::Exception::InvalidArgumentToMethod::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::InvalidArgumentsToTraitAliases;
-BEGIN {
-  $Moose::Exception::InvalidArgumentsToTraitAliases::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::InvalidArgumentsToTraitAliases::VERSION = '2.1204';
+$Moose::Exception::InvalidArgumentsToTraitAliases::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -1,8 +1,5 @@
 package Moose::Exception::InvalidBaseTypeGivenToCreateParameterizedTypeConstraint;
-BEGIN {
-  $Moose::Exception::InvalidBaseTypeGivenToCreateParameterizedTypeConstraint::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::InvalidBaseTypeGivenToCreateParameterizedTypeConstraint::VERSION = '2.1204';
+$Moose::Exception::InvalidBaseTypeGivenToCreateParameterizedTypeConstraint::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::TypeConstraint';
@@ -1,8 +1,5 @@
 package Moose::Exception::InvalidHandleValue;
-BEGIN {
-  $Moose::Exception::InvalidHandleValue::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::InvalidHandleValue::VERSION = '2.1204';
+$Moose::Exception::InvalidHandleValue::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Instance';
@@ -1,8 +1,5 @@
 package Moose::Exception::InvalidHasProvidedInARole;
-BEGIN {
-  $Moose::Exception::InvalidHasProvidedInARole::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::InvalidHasProvidedInARole::VERSION = '2.1204';
+$Moose::Exception::InvalidHasProvidedInARole::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role';
@@ -1,8 +1,5 @@
 package Moose::Exception::InvalidNameForType;
-BEGIN {
-  $Moose::Exception::InvalidNameForType::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::InvalidNameForType::VERSION = '2.1204';
+$Moose::Exception::InvalidNameForType::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::InvalidRoleApplication;
-BEGIN {
-  $Moose::Exception::InvalidRoleApplication::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::InvalidRoleApplication::VERSION = '2.1204';
+$Moose::Exception::InvalidRoleApplication::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -1,8 +1,5 @@
 package Moose::Exception::InvalidTypeConstraint;
-BEGIN {
-  $Moose::Exception::InvalidTypeConstraint::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::InvalidTypeConstraint::VERSION = '2.1204';
+$Moose::Exception::InvalidTypeConstraint::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::InvalidTypeGivenToCreateParameterizedTypeConstraint;
-BEGIN {
-  $Moose::Exception::InvalidTypeGivenToCreateParameterizedTypeConstraint::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::InvalidTypeGivenToCreateParameterizedTypeConstraint::VERSION = '2.1204';
+$Moose::Exception::InvalidTypeGivenToCreateParameterizedTypeConstraint::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::TypeConstraint';
@@ -1,8 +1,5 @@
 package Moose::Exception::InvalidValueForIs;
-BEGIN {
-  $Moose::Exception::InvalidValueForIs::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::InvalidValueForIs::VERSION = '2.1204';
+$Moose::Exception::InvalidValueForIs::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::InvalidAttributeOptions';
@@ -1,8 +1,5 @@
 package Moose::Exception::IsaDoesNotDoTheRole;
-BEGIN {
-  $Moose::Exception::IsaDoesNotDoTheRole::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::IsaDoesNotDoTheRole::VERSION = '2.1204';
+$Moose::Exception::IsaDoesNotDoTheRole::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::InvalidAttributeOptions';
@@ -1,8 +1,5 @@
 package Moose::Exception::IsaLacksDoesMethod;
-BEGIN {
-  $Moose::Exception::IsaLacksDoesMethod::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::IsaLacksDoesMethod::VERSION = '2.1204';
+$Moose::Exception::IsaLacksDoesMethod::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::InvalidAttributeOptions';
@@ -1,8 +1,5 @@
 package Moose::Exception::LazyAttributeNeedsADefault;
-BEGIN {
-  $Moose::Exception::LazyAttributeNeedsADefault::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::LazyAttributeNeedsADefault::VERSION = '2.1204';
+$Moose::Exception::LazyAttributeNeedsADefault::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::EitherAttributeOrAttributeName';
@@ -1,8 +1,5 @@
 package Moose::Exception::Legacy;
-BEGIN {
-  $Moose::Exception::Legacy::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::Legacy::VERSION = '2.1204';
+$Moose::Exception::Legacy::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::MOPAttributeNewNeedsAttributeName;
-BEGIN {
-  $Moose::Exception::MOPAttributeNewNeedsAttributeName::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MOPAttributeNewNeedsAttributeName::VERSION = '2.1204';
+$Moose::Exception::MOPAttributeNewNeedsAttributeName::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -1,15 +1,13 @@
 package Moose::Exception::MatchActionMustBeACodeRef;
-BEGIN {
-  $Moose::Exception::MatchActionMustBeACodeRef::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MatchActionMustBeACodeRef::VERSION = '2.1204';
+$Moose::Exception::MatchActionMustBeACodeRef::VERSION = '2.1213';
 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 +16,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;
@@ -1,8 +1,5 @@
 package Moose::Exception::MessageParameterMustBeCodeRef;
-BEGIN {
-  $Moose::Exception::MessageParameterMustBeCodeRef::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MessageParameterMustBeCodeRef::VERSION = '2.1204';
+$Moose::Exception::MessageParameterMustBeCodeRef::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -1,12 +1,11 @@
 package Moose::Exception::MetaclassIsAClassNotASubclassOfGivenMetaclass;
-BEGIN {
-  $Moose::Exception::MetaclassIsAClassNotASubclassOfGivenMetaclass::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MetaclassIsAClassNotASubclassOfGivenMetaclass::VERSION = '2.1204';
+$Moose::Exception::MetaclassIsAClassNotASubclassOfGivenMetaclass::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
 
+use Moose::Util 'find_meta';
+
 has 'metaclass' => (
     is       => 'ro',
     isa      => 'Str',
@@ -15,8 +14,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;
@@ -1,12 +1,11 @@
 package Moose::Exception::MetaclassIsARoleNotASubclassOfGivenMetaclass;
-BEGIN {
-  $Moose::Exception::MetaclassIsARoleNotASubclassOfGivenMetaclass::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MetaclassIsARoleNotASubclassOfGivenMetaclass::VERSION = '2.1204';
+$Moose::Exception::MetaclassIsARoleNotASubclassOfGivenMetaclass::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role';
 
+use Moose::Util 'find_meta';
+
 has 'metaclass' => (
     is       => 'ro',
     isa      => 'Str',
@@ -15,8 +14,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;
@@ -1,12 +1,11 @@
 package Moose::Exception::MetaclassIsNotASubclassOfGivenMetaclass;
-BEGIN {
-  $Moose::Exception::MetaclassIsNotASubclassOfGivenMetaclass::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MetaclassIsNotASubclassOfGivenMetaclass::VERSION = '2.1204';
+$Moose::Exception::MetaclassIsNotASubclassOfGivenMetaclass::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
 
+use Moose::Util 'find_meta';
+
 has 'metaclass' => (
     is       => 'ro',
     isa      => 'Str',
@@ -15,7 +14,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;
@@ -1,8 +1,5 @@
 package Moose::Exception::MetaclassMustBeASubclassOfMooseMetaClass;
-BEGIN {
-  $Moose::Exception::MetaclassMustBeASubclassOfMooseMetaClass::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MetaclassMustBeASubclassOfMooseMetaClass::VERSION = '2.1204';
+$Moose::Exception::MetaclassMustBeASubclassOfMooseMetaClass::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -1,8 +1,5 @@
 package Moose::Exception::MetaclassMustBeASubclassOfMooseMetaRole;
-BEGIN {
-  $Moose::Exception::MetaclassMustBeASubclassOfMooseMetaRole::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MetaclassMustBeASubclassOfMooseMetaRole::VERSION = '2.1204';
+$Moose::Exception::MetaclassMustBeASubclassOfMooseMetaRole::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role';
@@ -1,8 +1,5 @@
 package Moose::Exception::MetaclassMustBeDerivedFromClassMOPClass;
-BEGIN {
-  $Moose::Exception::MetaclassMustBeDerivedFromClassMOPClass::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MetaclassMustBeDerivedFromClassMOPClass::VERSION = '2.1204';
+$Moose::Exception::MetaclassMustBeDerivedFromClassMOPClass::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::MetaclassNotLoaded;
-BEGIN {
-  $Moose::Exception::MetaclassNotLoaded::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MetaclassNotLoaded::VERSION = '2.1204';
+$Moose::Exception::MetaclassNotLoaded::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -1,12 +1,11 @@
 package Moose::Exception::MetaclassTypeIncompatible;
-BEGIN {
-  $Moose::Exception::MetaclassTypeIncompatible::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MetaclassTypeIncompatible::VERSION = '2.1204';
+$Moose::Exception::MetaclassTypeIncompatible::VERSION = '2.1213';
 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 +22,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;
@@ -1,8 +1,5 @@
 package Moose::Exception::MethodExpectedAMetaclassObject;
-BEGIN {
-  $Moose::Exception::MethodExpectedAMetaclassObject::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MethodExpectedAMetaclassObject::VERSION = '2.1204';
+$Moose::Exception::MethodExpectedAMetaclassObject::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::MethodExpectsFewerArgs;
-BEGIN {
-  $Moose::Exception::MethodExpectsFewerArgs::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MethodExpectsFewerArgs::VERSION = '2.1204';
+$Moose::Exception::MethodExpectsFewerArgs::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::MethodExpectsMoreArgs;
-BEGIN {
-  $Moose::Exception::MethodExpectsMoreArgs::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MethodExpectsMoreArgs::VERSION = '2.1204';
+$Moose::Exception::MethodExpectsMoreArgs::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::MethodModifierNeedsMethodName;
-BEGIN {
-  $Moose::Exception::MethodModifierNeedsMethodName::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MethodModifierNeedsMethodName::VERSION = '2.1204';
+$Moose::Exception::MethodModifierNeedsMethodName::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -1,8 +1,5 @@
 package Moose::Exception::MethodNameConflictInRoles;
-BEGIN {
-  $Moose::Exception::MethodNameConflictInRoles::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MethodNameConflictInRoles::VERSION = '2.1204';
+$Moose::Exception::MethodNameConflictInRoles::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -1,8 +1,5 @@
 package Moose::Exception::MethodNameNotFoundInInheritanceHierarchy;
-BEGIN {
-  $Moose::Exception::MethodNameNotFoundInInheritanceHierarchy::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MethodNameNotFoundInInheritanceHierarchy::VERSION = '2.1204';
+$Moose::Exception::MethodNameNotFoundInInheritanceHierarchy::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -15,7 +12,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;
@@ -1,8 +1,5 @@
 package Moose::Exception::MethodNameNotGiven;
-BEGIN {
-  $Moose::Exception::MethodNameNotGiven::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MethodNameNotGiven::VERSION = '2.1204';
+$Moose::Exception::MethodNameNotGiven::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -1,8 +1,5 @@
 package Moose::Exception::MustDefineAMethodName;
-BEGIN {
-  $Moose::Exception::MustDefineAMethodName::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MustDefineAMethodName::VERSION = '2.1204';
+$Moose::Exception::MustDefineAMethodName::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Instance';
@@ -1,8 +1,5 @@
 package Moose::Exception::MustDefineAnAttributeName;
-BEGIN {
-  $Moose::Exception::MustDefineAnAttributeName::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MustDefineAnAttributeName::VERSION = '2.1204';
+$Moose::Exception::MustDefineAnAttributeName::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -1,8 +1,5 @@
 package Moose::Exception::MustHaveAtLeastOneValueToEnumerate;
-BEGIN {
-  $Moose::Exception::MustHaveAtLeastOneValueToEnumerate::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MustHaveAtLeastOneValueToEnumerate::VERSION = '2.1204';
+$Moose::Exception::MustHaveAtLeastOneValueToEnumerate::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -1,8 +1,5 @@
 package Moose::Exception::MustPassAHashOfOptions;
-BEGIN {
-  $Moose::Exception::MustPassAHashOfOptions::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MustPassAHashOfOptions::VERSION = '2.1204';
+$Moose::Exception::MustPassAHashOfOptions::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -1,8 +1,5 @@
 package Moose::Exception::MustPassAMooseMetaRoleInstanceOrSubclass;
-BEGIN {
-  $Moose::Exception::MustPassAMooseMetaRoleInstanceOrSubclass::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MustPassAMooseMetaRoleInstanceOrSubclass::VERSION = '2.1204';
+$Moose::Exception::MustPassAMooseMetaRoleInstanceOrSubclass::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::MustPassAPackageNameOrAnExistingClassMOPPackageInstance;
-BEGIN {
-  $Moose::Exception::MustPassAPackageNameOrAnExistingClassMOPPackageInstance::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MustPassAPackageNameOrAnExistingClassMOPPackageInstance::VERSION = '2.1204';
+$Moose::Exception::MustPassAPackageNameOrAnExistingClassMOPPackageInstance::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -1,8 +1,5 @@
 package Moose::Exception::MustPassEvenNumberOfArguments;
-BEGIN {
-  $Moose::Exception::MustPassEvenNumberOfArguments::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MustPassEvenNumberOfArguments::VERSION = '2.1204';
+$Moose::Exception::MustPassEvenNumberOfArguments::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::MustPassEvenNumberOfAttributeOptions;
-BEGIN {
-  $Moose::Exception::MustPassEvenNumberOfAttributeOptions::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MustPassEvenNumberOfAttributeOptions::VERSION = '2.1204';
+$Moose::Exception::MustPassEvenNumberOfAttributeOptions::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::MustProvideANameForTheAttribute;
-BEGIN {
-  $Moose::Exception::MustProvideANameForTheAttribute::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MustProvideANameForTheAttribute::VERSION = '2.1204';
+$Moose::Exception::MustProvideANameForTheAttribute::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -1,8 +1,5 @@
 package Moose::Exception::MustSpecifyAtleastOneMethod;
-BEGIN {
-  $Moose::Exception::MustSpecifyAtleastOneMethod::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MustSpecifyAtleastOneMethod::VERSION = '2.1204';
+$Moose::Exception::MustSpecifyAtleastOneMethod::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role';
@@ -1,8 +1,5 @@
 package Moose::Exception::MustSpecifyAtleastOneRole;
-BEGIN {
-  $Moose::Exception::MustSpecifyAtleastOneRole::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MustSpecifyAtleastOneRole::VERSION = '2.1204';
+$Moose::Exception::MustSpecifyAtleastOneRole::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role';
@@ -1,8 +1,5 @@
 package Moose::Exception::MustSpecifyAtleastOneRoleToApplicant;
-BEGIN {
-  $Moose::Exception::MustSpecifyAtleastOneRoleToApplicant::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MustSpecifyAtleastOneRoleToApplicant::VERSION = '2.1204';
+$Moose::Exception::MustSpecifyAtleastOneRoleToApplicant::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::MustSupplyAClassMOPAttributeInstance;
-BEGIN {
-  $Moose::Exception::MustSupplyAClassMOPAttributeInstance::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MustSupplyAClassMOPAttributeInstance::VERSION = '2.1204';
+$Moose::Exception::MustSupplyAClassMOPAttributeInstance::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -1,8 +1,5 @@
 package Moose::Exception::MustSupplyADelegateToMethod;
-BEGIN {
-  $Moose::Exception::MustSupplyADelegateToMethod::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MustSupplyADelegateToMethod::VERSION = '2.1204';
+$Moose::Exception::MustSupplyADelegateToMethod::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -1,8 +1,5 @@
 package Moose::Exception::MustSupplyAMetaclass;
-BEGIN {
-  $Moose::Exception::MustSupplyAMetaclass::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MustSupplyAMetaclass::VERSION = '2.1204';
+$Moose::Exception::MustSupplyAMetaclass::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -1,8 +1,5 @@
 package Moose::Exception::MustSupplyAMooseMetaAttributeInstance;
-BEGIN {
-  $Moose::Exception::MustSupplyAMooseMetaAttributeInstance::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MustSupplyAMooseMetaAttributeInstance::VERSION = '2.1204';
+$Moose::Exception::MustSupplyAMooseMetaAttributeInstance::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -1,8 +1,5 @@
 package Moose::Exception::MustSupplyAnAccessorTypeToConstructWith;
-BEGIN {
-  $Moose::Exception::MustSupplyAnAccessorTypeToConstructWith::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MustSupplyAnAccessorTypeToConstructWith::VERSION = '2.1204';
+$Moose::Exception::MustSupplyAnAccessorTypeToConstructWith::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -1,8 +1,5 @@
 package Moose::Exception::MustSupplyAnAttributeToConstructWith;
-BEGIN {
-  $Moose::Exception::MustSupplyAnAttributeToConstructWith::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MustSupplyAnAttributeToConstructWith::VERSION = '2.1204';
+$Moose::Exception::MustSupplyAnAttributeToConstructWith::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -1,8 +1,5 @@
 package Moose::Exception::MustSupplyArrayRefAsCurriedArguments;
-BEGIN {
-  $Moose::Exception::MustSupplyArrayRefAsCurriedArguments::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MustSupplyArrayRefAsCurriedArguments::VERSION = '2.1204';
+$Moose::Exception::MustSupplyArrayRefAsCurriedArguments::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash', 'Moose::Exception::Role::Class';
@@ -1,8 +1,5 @@
 package Moose::Exception::MustSupplyPackageNameAndName;
-BEGIN {
-  $Moose::Exception::MustSupplyPackageNameAndName::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::MustSupplyPackageNameAndName::VERSION = '2.1204';
+$Moose::Exception::MustSupplyPackageNameAndName::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -1,12 +1,11 @@
 package Moose::Exception::NeedsTypeConstraintUnionForTypeCoercionUnion;
-BEGIN {
-  $Moose::Exception::NeedsTypeConstraintUnionForTypeCoercionUnion::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::NeedsTypeConstraintUnionForTypeCoercionUnion::VERSION = '2.1204';
+$Moose::Exception::NeedsTypeConstraintUnionForTypeCoercionUnion::VERSION = '2.1213';
 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 +14,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"
@@ -1,8 +1,5 @@
 package Moose::Exception::NeitherAttributeNorAttributeNameIsGiven;
-BEGIN {
-  $Moose::Exception::NeitherAttributeNorAttributeNameIsGiven::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::NeitherAttributeNorAttributeNameIsGiven::VERSION = '2.1204';
+$Moose::Exception::NeitherAttributeNorAttributeNameIsGiven::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::NeitherClassNorClassNameIsGiven;
-BEGIN {
-  $Moose::Exception::NeitherClassNorClassNameIsGiven::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::NeitherClassNorClassNameIsGiven::VERSION = '2.1204';
+$Moose::Exception::NeitherClassNorClassNameIsGiven::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::NeitherRoleNorRoleNameIsGiven;
-BEGIN {
-  $Moose::Exception::NeitherRoleNorRoleNameIsGiven::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::NeitherRoleNorRoleNameIsGiven::VERSION = '2.1204';
+$Moose::Exception::NeitherRoleNorRoleNameIsGiven::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::NeitherTypeNorTypeNameIsGiven;
-BEGIN {
-  $Moose::Exception::NeitherTypeNorTypeNameIsGiven::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::NeitherTypeNorTypeNameIsGiven::VERSION = '2.1204';
+$Moose::Exception::NeitherTypeNorTypeNameIsGiven::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,15 +1,12 @@
 package Moose::Exception::NoAttributeFoundInSuperClass;
-BEGIN {
-  $Moose::Exception::NoAttributeFoundInSuperClass::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::NoAttributeFoundInSuperClass::VERSION = '2.1204';
+$Moose::Exception::NoAttributeFoundInSuperClass::VERSION = '2.1213';
 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;
@@ -1,8 +1,5 @@
 package Moose::Exception::NoBodyToInitializeInAnAbstractBaseClass;
-BEGIN {
-  $Moose::Exception::NoBodyToInitializeInAnAbstractBaseClass::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::NoBodyToInitializeInAnAbstractBaseClass::VERSION = '2.1204';
+$Moose::Exception::NoBodyToInitializeInAnAbstractBaseClass::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::NoCasesMatched;
-BEGIN {
-  $Moose::Exception::NoCasesMatched::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::NoCasesMatched::VERSION = '2.1204';
+$Moose::Exception::NoCasesMatched::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::NoConstraintCheckForTypeConstraint;
-BEGIN {
-  $Moose::Exception::NoConstraintCheckForTypeConstraint::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::NoConstraintCheckForTypeConstraint::VERSION = '2.1204';
+$Moose::Exception::NoConstraintCheckForTypeConstraint::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::TypeConstraint';
@@ -1,8 +1,5 @@
 package Moose::Exception::NoDestructorClassSpecified;
-BEGIN {
-  $Moose::Exception::NoDestructorClassSpecified::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::NoDestructorClassSpecified::VERSION = '2.1204';
+$Moose::Exception::NoDestructorClassSpecified::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class', 'Moose::Exception::Role::ParamsHash';
@@ -1,15 +1,15 @@
 package Moose::Exception::NoImmutableTraitSpecifiedForClass;
-BEGIN {
-  $Moose::Exception::NoImmutableTraitSpecifiedForClass::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::NoImmutableTraitSpecifiedForClass::VERSION = '2.1204';
+$Moose::Exception::NoImmutableTraitSpecifiedForClass::VERSION = '2.1213';
 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;
@@ -1,8 +1,5 @@
 package Moose::Exception::NoParentGivenToSubtype;
-BEGIN {
-  $Moose::Exception::NoParentGivenToSubtype::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::NoParentGivenToSubtype::VERSION = '2.1204';
+$Moose::Exception::NoParentGivenToSubtype::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::OnlyInstancesCanBeCloned;
-BEGIN {
-  $Moose::Exception::OnlyInstancesCanBeCloned::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::OnlyInstancesCanBeCloned::VERSION = '2.1204';
+$Moose::Exception::OnlyInstancesCanBeCloned::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class', 'Moose::Exception::Role::ParamsHash';
@@ -1,8 +1,5 @@
 package Moose::Exception::OperatorIsRequired;
-BEGIN {
-  $Moose::Exception::OperatorIsRequired::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::OperatorIsRequired::VERSION = '2.1204';
+$Moose::Exception::OperatorIsRequired::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -1,15 +1,12 @@
 package Moose::Exception::OverrideConflictInComposition;
-BEGIN {
-  $Moose::Exception::OverrideConflictInComposition::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::OverrideConflictInComposition::VERSION = '2.1204';
+$Moose::Exception::OverrideConflictInComposition::VERSION = '2.1213';
 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 +27,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.";
     }
@@ -1,25 +1,26 @@
 package Moose::Exception::OverrideConflictInSummation;
-BEGIN {
-  $Moose::Exception::OverrideConflictInSummation::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::OverrideConflictInSummation::VERSION = '2.1204';
+$Moose::Exception::OverrideConflictInSummation::VERSION = '2.1213';
 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 +36,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 {
@@ -1,8 +1,5 @@
 package Moose::Exception::PackageDoesNotUseMooseExporter;
-BEGIN {
-  $Moose::Exception::PackageDoesNotUseMooseExporter::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::PackageDoesNotUseMooseExporter::VERSION = '2.1204';
+$Moose::Exception::PackageDoesNotUseMooseExporter::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::PackageNameAndNameParamsNotGivenToWrap;
-BEGIN {
-  $Moose::Exception::PackageNameAndNameParamsNotGivenToWrap::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::PackageNameAndNameParamsNotGivenToWrap::VERSION = '2.1204';
+$Moose::Exception::PackageNameAndNameParamsNotGivenToWrap::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -1,8 +1,5 @@
 package Moose::Exception::PackagesAndModulesAreNotCachable;
-BEGIN {
-  $Moose::Exception::PackagesAndModulesAreNotCachable::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::PackagesAndModulesAreNotCachable::VERSION = '2.1204';
+$Moose::Exception::PackagesAndModulesAreNotCachable::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class', 'Moose::Exception::Role::ParamsHash';
@@ -1,12 +1,11 @@
 package Moose::Exception::ParameterIsNotSubtypeOfParent;
-BEGIN {
-  $Moose::Exception::ParameterIsNotSubtypeOfParent::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::ParameterIsNotSubtypeOfParent::VERSION = '2.1204';
+$Moose::Exception::ParameterIsNotSubtypeOfParent::VERSION = '2.1213';
 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 +15,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";
 }
@@ -1,8 +1,5 @@
 package Moose::Exception::ReferencesAreNotAllowedAsDefault;
-BEGIN {
-  $Moose::Exception::ReferencesAreNotAllowedAsDefault::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::ReferencesAreNotAllowedAsDefault::VERSION = '2.1204';
+$Moose::Exception::ReferencesAreNotAllowedAsDefault::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -1,8 +1,5 @@
 package Moose::Exception::RequiredAttributeLacksInitialization;
-BEGIN {
-  $Moose::Exception::RequiredAttributeLacksInitialization::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::RequiredAttributeLacksInitialization::VERSION = '2.1204';
+$Moose::Exception::RequiredAttributeLacksInitialization::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -1,8 +1,5 @@
 package Moose::Exception::RequiredAttributeNeedsADefault;
-BEGIN {
-  $Moose::Exception::RequiredAttributeNeedsADefault::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::RequiredAttributeNeedsADefault::VERSION = '2.1204';
+$Moose::Exception::RequiredAttributeNeedsADefault::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::InvalidAttributeOptions';
@@ -1,8 +1,5 @@
 package Moose::Exception::RequiredMethodsImportedByClass;
-BEGIN {
-  $Moose::Exception::RequiredMethodsImportedByClass::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::RequiredMethodsImportedByClass::VERSION = '2.1204';
+$Moose::Exception::RequiredMethodsImportedByClass::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class', 'Moose::Exception::Role::Role';
@@ -31,7 +28,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."'");
@@ -1,8 +1,5 @@
 package Moose::Exception::RequiredMethodsNotImplementedByClass;
-BEGIN {
-  $Moose::Exception::RequiredMethodsNotImplementedByClass::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::RequiredMethodsNotImplementedByClass::VERSION = '2.1204';
+$Moose::Exception::RequiredMethodsNotImplementedByClass::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class', 'Moose::Exception::Role::Role';
@@ -1,8 +1,5 @@
 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.1213';
 use Moose::Role;
 
 has 'attribute' => (
@@ -1,8 +1,5 @@
 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.1213';
 use Moose::Role;
 
 has 'attribute_name' => (
@@ -1,57 +1,13 @@
 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.1213';
 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;
@@ -1,8 +1,5 @@
 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.1213';
 use Moose::Util 'throw_exception';
 use Moose::Role;
 
@@ -1,8 +1,5 @@
 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.1213';
 use Moose::Role;
 
 has 'instance' => (
@@ -0,0 +1,11 @@
+package Moose::Exception::Role::InstanceClass;
+$Moose::Exception::Role::InstanceClass::VERSION = '2.1213';
+use Moose::Role;
+
+has 'instance_class' => (
+    is       => 'ro',
+    isa      => 'Str',
+    required => 1,
+);
+
+1;
@@ -1,8 +1,5 @@
 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.1213';
 use Moose::Role;
 with 'Moose::Exception::Role::ParamsHash';
 
@@ -1,8 +1,5 @@
 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.1213';
 use Moose::Role;
 
 has 'method' => (
@@ -1,8 +1,5 @@
 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.1213';
 use Moose::Role;
 
 has 'params' => (
@@ -1,52 +1,15 @@
 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.1213';
+# 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;
@@ -1,8 +1,5 @@
 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.1213';
 use Moose::Role;
 with 'Moose::Exception::Role::ParamsHash';
 
@@ -13,4 +10,3 @@ has 'attribute_class' => (
 );
 
 1;
-
@@ -1,8 +1,5 @@
 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.1213';
 use Moose::Role;
 with 'Moose::Exception::Role::ParamsHash';
 
@@ -13,4 +10,3 @@ has 'class' => (
 );
 
 1;
-
@@ -1,53 +1,13 @@
 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.1213';
 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;
@@ -1,27 +1,26 @@
 package Moose::Exception::RoleDoesTheExcludedRole;
-BEGIN {
-  $Moose::Exception::RoleDoesTheExcludedRole::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::RoleDoesTheExcludedRole::VERSION = '2.1204';
+$Moose::Exception::RoleDoesTheExcludedRole::VERSION = '2.1213';
 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;
@@ -1,8 +1,5 @@
 package Moose::Exception::RoleExclusionConflict;
-BEGIN {
-  $Moose::Exception::RoleExclusionConflict::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::RoleExclusionConflict::VERSION = '2.1204';
+$Moose::Exception::RoleExclusionConflict::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role';
@@ -1,8 +1,5 @@
 package Moose::Exception::RoleNameRequired;
-BEGIN {
-  $Moose::Exception::RoleNameRequired::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::RoleNameRequired::VERSION = '2.1204';
+$Moose::Exception::RoleNameRequired::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -1,8 +1,5 @@
 package Moose::Exception::RoleNameRequiredForMooseMetaRole;
-BEGIN {
-  $Moose::Exception::RoleNameRequiredForMooseMetaRole::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::RoleNameRequiredForMooseMetaRole::VERSION = '2.1204';
+$Moose::Exception::RoleNameRequiredForMooseMetaRole::VERSION = '2.1213';
 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;
@@ -1,8 +1,5 @@
 package Moose::Exception::RolesDoNotSupportAugment;
-BEGIN {
-  $Moose::Exception::RolesDoNotSupportAugment::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::RolesDoNotSupportAugment::VERSION = '2.1204';
+$Moose::Exception::RolesDoNotSupportAugment::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::RolesDoNotSupportExtends;
-BEGIN {
-  $Moose::Exception::RolesDoNotSupportExtends::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::RolesDoNotSupportExtends::VERSION = '2.1204';
+$Moose::Exception::RolesDoNotSupportExtends::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::RolesDoNotSupportInner;
-BEGIN {
-  $Moose::Exception::RolesDoNotSupportInner::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::RolesDoNotSupportInner::VERSION = '2.1204';
+$Moose::Exception::RolesDoNotSupportInner::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::RolesDoNotSupportRegexReferencesForMethodModifiers;
-BEGIN {
-  $Moose::Exception::RolesDoNotSupportRegexReferencesForMethodModifiers::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::RolesDoNotSupportRegexReferencesForMethodModifiers::VERSION = '2.1204';
+$Moose::Exception::RolesDoNotSupportRegexReferencesForMethodModifiers::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Role';
@@ -1,8 +1,5 @@
 package Moose::Exception::RolesInCreateTakesAnArrayRef;
-BEGIN {
-  $Moose::Exception::RolesInCreateTakesAnArrayRef::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::RolesInCreateTakesAnArrayRef::VERSION = '2.1204';
+$Moose::Exception::RolesInCreateTakesAnArrayRef::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -1,8 +1,5 @@
 package Moose::Exception::RolesListMustBeInstancesOfMooseMetaRole;
-BEGIN {
-  $Moose::Exception::RolesListMustBeInstancesOfMooseMetaRole::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::RolesListMustBeInstancesOfMooseMetaRole::VERSION = '2.1204';
+$Moose::Exception::RolesListMustBeInstancesOfMooseMetaRole::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -1,8 +1,5 @@
 package Moose::Exception::SingleParamsToNewMustBeHashRef;
-BEGIN {
-  $Moose::Exception::SingleParamsToNewMustBeHashRef::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::SingleParamsToNewMustBeHashRef::VERSION = '2.1204';
+$Moose::Exception::SingleParamsToNewMustBeHashRef::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::TriggerMustBeACodeRef;
-BEGIN {
-  $Moose::Exception::TriggerMustBeACodeRef::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::TriggerMustBeACodeRef::VERSION = '2.1204';
+$Moose::Exception::TriggerMustBeACodeRef::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::InvalidAttributeOptions';
@@ -1,16 +1,23 @@
 package Moose::Exception::TypeConstraintCannotBeUsedForAParameterizableType;
-BEGIN {
-  $Moose::Exception::TypeConstraintCannotBeUsedForAParameterizableType::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::TypeConstraintCannotBeUsedForAParameterizableType::VERSION = '2.1204';
+$Moose::Exception::TypeConstraintCannotBeUsedForAParameterizableType::VERSION = '2.1213';
 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;
@@ -1,12 +1,11 @@
 package Moose::Exception::TypeConstraintIsAlreadyCreated;
-BEGIN {
-  $Moose::Exception::TypeConstraintIsAlreadyCreated::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::TypeConstraintIsAlreadyCreated::VERSION = '2.1204';
+$Moose::Exception::TypeConstraintIsAlreadyCreated::VERSION = '2.1213';
 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 +13,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;
@@ -1,8 +1,5 @@
 package Moose::Exception::TypeParameterMustBeMooseMetaType;
-BEGIN {
-  $Moose::Exception::TypeParameterMustBeMooseMetaType::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::TypeParameterMustBeMooseMetaType::VERSION = '2.1204';
+$Moose::Exception::TypeParameterMustBeMooseMetaType::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::TypeConstraint';
@@ -1,8 +1,5 @@
 package Moose::Exception::UnableToCanonicalizeHandles;
-BEGIN {
-  $Moose::Exception::UnableToCanonicalizeHandles::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::UnableToCanonicalizeHandles::VERSION = '2.1204';
+$Moose::Exception::UnableToCanonicalizeHandles::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Attribute';
@@ -1,8 +1,5 @@
 package Moose::Exception::UnableToCanonicalizeNonRolePackage;
-BEGIN {
-  $Moose::Exception::UnableToCanonicalizeNonRolePackage::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::UnableToCanonicalizeNonRolePackage::VERSION = '2.1204';
+$Moose::Exception::UnableToCanonicalizeNonRolePackage::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Attribute';
@@ -1,8 +1,5 @@
 package Moose::Exception::UnableToRecognizeDelegateMetaclass;
-BEGIN {
-  $Moose::Exception::UnableToRecognizeDelegateMetaclass::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::UnableToRecognizeDelegateMetaclass::VERSION = '2.1204';
+$Moose::Exception::UnableToRecognizeDelegateMetaclass::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Attribute';
@@ -1,8 +1,5 @@
 package Moose::Exception::UndefinedHashKeysPassedToMethod;
-BEGIN {
-  $Moose::Exception::UndefinedHashKeysPassedToMethod::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::UndefinedHashKeysPassedToMethod::VERSION = '2.1204';
+$Moose::Exception::UndefinedHashKeysPassedToMethod::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::UnionCalledWithAnArrayRefAndAdditionalArgs;
-BEGIN {
-  $Moose::Exception::UnionCalledWithAnArrayRefAndAdditionalArgs::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::UnionCalledWithAnArrayRefAndAdditionalArgs::VERSION = '2.1204';
+$Moose::Exception::UnionCalledWithAnArrayRefAndAdditionalArgs::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::UnionTakesAtleastTwoTypeNames;
-BEGIN {
-  $Moose::Exception::UnionTakesAtleastTwoTypeNames::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::UnionTakesAtleastTwoTypeNames::VERSION = '2.1204';
+$Moose::Exception::UnionTakesAtleastTwoTypeNames::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 
@@ -1,8 +1,5 @@
 package Moose::Exception::ValidationFailedForInlineTypeConstraint;
-BEGIN {
-  $Moose::Exception::ValidationFailedForInlineTypeConstraint::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::ValidationFailedForInlineTypeConstraint::VERSION = '2.1204';
+$Moose::Exception::ValidationFailedForInlineTypeConstraint::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Class';
@@ -1,8 +1,5 @@
 package Moose::Exception::ValidationFailedForTypeConstraint;
-BEGIN {
-  $Moose::Exception::ValidationFailedForTypeConstraint::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::ValidationFailedForTypeConstraint::VERSION = '2.1204';
+$Moose::Exception::ValidationFailedForTypeConstraint::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::Attribute';
@@ -1,8 +1,5 @@
 package Moose::Exception::WrapTakesACodeRefToBless;
-BEGIN {
-  $Moose::Exception::WrapTakesACodeRefToBless::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::WrapTakesACodeRefToBless::VERSION = '2.1204';
+$Moose::Exception::WrapTakesACodeRefToBless::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -1,8 +1,5 @@
 package Moose::Exception::WrongTypeConstraintGiven;
-BEGIN {
-  $Moose::Exception::WrongTypeConstraintGiven::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::WrongTypeConstraintGiven::VERSION = '2.1204';
+$Moose::Exception::WrongTypeConstraintGiven::VERSION = '2.1213';
 use Moose;
 extends 'Moose::Exception';
 with 'Moose::Exception::Role::ParamsHash';
@@ -1,10 +1,7 @@
 package Moose::Exception;
-BEGIN {
-  $Moose::Exception::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exception::VERSION = '2.1204';
+$Moose::Exception::VERSION = '2.1213';
 use Moose;
-use Devel::StackTrace;
+use Devel::StackTrace 1.33;
 
 has 'trace' => (
     is            => 'ro',
@@ -34,9 +31,20 @@ use overload
 
 sub _build_trace {
     my $self = shift;
+
+    # skip frames that are method calls on the exception object, which include
+    # the object itself in the arguments (but Devel::LeakTrace really ought to
+    # be weakening all references in its frames)
+    my $skip = 0;
+    while (my @c = caller(++$skip)) {
+        last if $c[3] =~ /^(.*)::new$/ && $self->isa($1);
+    }
+    $skip++;
+
     Devel::StackTrace->new(
         message => $self->message,
         indent  => 1,
+        skip_frames => $skip,
     );
 }
 
@@ -51,7 +59,7 @@ sub BUILD {
 
 1;
 
-# ABSTRACT: Superclass of all Moose exceptions
+# ABSTRACT: Superclass for Moose internal exceptions
 
 __END__
 
@@ -61,16 +69,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.1213
 
 =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
 
@@ -1,8 +1,5 @@
 package Moose::Exporter;
-BEGIN {
-  $Moose::Exporter::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Exporter::VERSION = '2.1204';
+$Moose::Exporter::VERSION = '2.1213';
 use strict;
 use warnings;
 
@@ -10,7 +7,7 @@ use Class::Load qw(is_class_loaded);
 use Class::MOP;
 use List::MoreUtils qw( first_index uniq );
 use Moose::Util::MetaRole;
-use Scalar::Util qw(reftype);
+use Scalar::Util 1.11 qw(reftype);
 use Sub::Exporter 0.980;
 use Sub::Name qw(subname);
 
@@ -86,10 +83,16 @@ sub build_import_methods {
     my $package = Class::MOP::Package->initialize($exporting_package);
     for my $to_install ( @{ $args{install} || [] } ) {
         my $symbol = '&' . $to_install;
+
         next
             unless $methods{$to_install}
                 && !$package->has_package_symbol($symbol);
-        $package->add_package_symbol( $symbol, $methods{$to_install} );
+        $package->add_package_symbol(
+            $symbol,
+            subname(
+                $exporting_package . '::' . $to_install, $methods{$to_install}
+            )
+        );
     }
 
     return ( $methods{import}, $methods{unimport}, $methods{init_meta} );
@@ -794,7 +797,7 @@ Moose::Exporter - make an import() and unimport() just like Moose.pm
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.
@@ -348,6 +345,10 @@ simply throw an error.
 
 The things on the chopping block are:
 
+=item The lazy_build attribute feature is discouraged
+
+While not deprecated, we strongly discourage you from using this feature.
+
 =over 8
 
 =item * Old public methods in Class::MOP and Moose
@@ -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.1213';
 
 __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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =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.1213
 
 =head1 SUPPORT POLICY
 
@@ -121,28 +118,30 @@ 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
-long as our test suite continues to pass on 5.8.3. What this does mean is that
-the core Moose dev team will not be spending any time fixing bugs on versions
-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
+that Moose will work with. Our declared perl dependency will remain at 5.8.3
+as long as our test suite continues to pass on 5.8.3. What this does mean is
+that the core Moose dev team will not be spending any time fixing bugs on
+versions 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.1213
 
 =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.1213
 
 =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.1213
 
 =head1 WHAT IS MOOSE?
 
@@ -1,8 +1,5 @@
 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.1213';
 use Moose::Role;
 with 'Moose::Meta::Attribute::Native::Trait';
 
@@ -26,7 +23,7 @@ Moose::Meta::Attribute::Native::Trait::Array - Helper trait for ArrayRef attribu
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 SYNOPSIS
 
@@ -1,8 +1,5 @@
 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.1213';
 use Moose::Role;
 with 'Moose::Meta::Attribute::Native::Trait';
 
@@ -26,7 +23,7 @@ Moose::Meta::Attribute::Native::Trait::Bool - Helper trait for Bool attributes
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 SYNOPSIS
 
@@ -1,8 +1,5 @@
 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.1213';
 use Moose::Role;
 with 'Moose::Meta::Attribute::Native::Trait';
 
@@ -26,7 +23,7 @@ Moose::Meta::Attribute::Native::Trait::Code - Helper trait for CodeRef attribute
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 SYNOPSIS
 
@@ -1,8 +1,5 @@
 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.1213';
 use Moose::Role;
 with 'Moose::Meta::Attribute::Native::Trait';
 
@@ -27,7 +24,7 @@ Moose::Meta::Attribute::Native::Trait::Counter - Helper trait for Int attributes
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 SYNOPSIS
 
@@ -1,8 +1,5 @@
 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.1213';
 use Moose::Role;
 with 'Moose::Meta::Attribute::Native::Trait';
 
@@ -26,7 +23,7 @@ Moose::Meta::Attribute::Native::Trait::Hash - Helper trait for HashRef attribute
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 SYNOPSIS
 
@@ -128,7 +125,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.
@@ -1,8 +1,5 @@
 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.1213';
 use Moose::Role;
 with 'Moose::Meta::Attribute::Native::Trait';
 
@@ -26,7 +23,7 @@ Moose::Meta::Attribute::Native::Trait::Number - Helper trait for Num attributes
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 SYNOPSIS
 
@@ -1,8 +1,5 @@
 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.1213';
 use Moose::Role;
 with 'Moose::Meta::Attribute::Native::Trait';
 
@@ -26,7 +23,7 @@ Moose::Meta::Attribute::Native::Trait::String - Helper trait for Str attributes
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 SYNOPSIS
 
@@ -1,8 +1,5 @@
 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.1213';
 use Moose::Role;
 use Module::Runtime 'require_module';
 use List::MoreUtils qw( any uniq );
@@ -31,11 +28,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 +179,7 @@ Moose::Meta::Attribute::Native::Trait - Shared role for native delegation traits
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 BUGS
 
@@ -1,10 +1,7 @@
 use strict;
 use warnings;
 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.1213';
 use Module::Runtime 'require_module';
 
 my @trait_names = qw(Bool Counter Number String Array Hash Code);
@@ -44,7 +41,7 @@ Moose::Meta::Attribute::Native - Delegate to native Perl types
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 SYNOPSIS
 
@@ -1,10 +1,7 @@
 use strict;
 use warnings;
 package Moose::Meta::Attribute;
-BEGIN {
-  $Moose::Meta::Attribute::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Meta::Attribute::VERSION = '2.1204';
+$Moose::Meta::Attribute::VERSION = '2.1213';
 use B ();
 use Scalar::Util 'blessed', 'weaken';
 use List::MoreUtils 'any';
@@ -44,8 +41,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 +335,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 +487,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 +547,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 +631,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 +688,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 +703,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 +835,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 +922,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.','.
@@ -1272,10 +1270,7 @@ sub verify_against_type_constraint {
 }
 
 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.1213';
 sub register_implementation { 'Moose::Meta::Attribute' }
 1;
 
@@ -1293,7 +1288,7 @@ Moose::Meta::Attribute - The Moose attribute metaclass
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1395,14 +1390,26 @@ attribute is read.
 If this is true, the attribute's value will be stored as a weak
 reference.
 
+=item * documentation
+
+An arbitrary string that can be retrieved later by calling C<<
+$attr->documentation >>.
+
 =item * auto_deref => $bool
 
+B<Note that in cases where you want this feature you are often better served
+by using a L<Moose::Meta::Attribute::Native> trait instead>.
+
 If this is true, then the reader will dereference the value when it is
 called. The attribute must have a type constraint which defines the
 attribute as an array or hash reference.
 
 =item * lazy_build => $bool
 
+B<Note that use of this feature is strongly discouraged.> Some documentation
+used to encourage use of this feature as a best practice, but we have changed
+our minds.
+
 Setting this to true makes the attribute lazy and provides a number of
 default methods.
 
@@ -1443,11 +1450,6 @@ Note the doubled underscore in the builder name. Internally, Moose
 simply prepends the attribute name with "_build_" to come up with the
 builder name.
 
-=item * documentation
-
-An arbitrary string that can be retrieved later by calling C<<
-$attr->documentation >>.
-
 =back
 
 =item B<< $attr->clone(%options) >>
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -33,7 +30,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 +55,7 @@ Moose::Meta::Class::Immutable::Trait - Implements immutability for metaclass obj
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,5 @@
-
 package Moose::Meta::Class;
-BEGIN {
-  $Moose::Meta::Class::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Meta::Class::VERSION = '2.1204';
+$Moose::Meta::Class::VERSION = '2.1213';
 use strict;
 use warnings;
 
@@ -184,7 +180,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 +195,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 +232,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 +252,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 +332,7 @@ sub _inline_BUILDARGS {
                 'if (scalar @_ == 1) {',
                     'if (!defined($_[0]) || ref($_[0]) ne \'HASH\') {',
                         $self->_inline_throw_exception(
-                            '"SingleParamsToNewMustBeHashRef"'
+                            'SingleParamsToNewMustBeHashRef'
                         ) . ';',
                     '}',
                     '$params = { %{ $_[0] } };',
@@ -383,7 +379,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 +556,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 +584,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 +598,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 +717,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 +782,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 +802,7 @@ Moose::Meta::Class - The Moose metaclass
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -881,6 +877,9 @@ Each superclass can be followed by a hash reference containing a
 L<-version|Class::MOP/Class Loading Options> value. If the version
 requirement is not satisfied an error will be thrown.
 
+When you pass classes to this method, we will attempt to load them if they are
+not already loaded.
+
 =item B<< $metaclass->add_override_method_modifier($name, $sub) >>
 
 This adds an C<override> method modifier to the package.
@@ -1,9 +1,5 @@
-
 package Moose::Meta::Instance;
-BEGIN {
-  $Moose::Meta::Instance::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Meta::Instance::VERSION = '2.1204';
+$Moose::Meta::Instance::VERSION = '2.1213';
 use strict;
 use warnings;
 
@@ -29,7 +25,7 @@ Moose::Meta::Instance - The Moose Instance metaclass
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 SYNOPSIS
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -22,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             => "first",'.
                                             'type_of_argument        => "code reference",'.
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -22,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             => "first_index",'.
                                             'type_of_argument        => "code reference",'.
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -21,7 +18,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",'.
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -21,7 +18,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",'.
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -21,7 +18,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",'.
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -22,7 +19,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 +28,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",'.
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -22,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             => "reduce",'.
                                             'type_of_argument        => "code reference",'.
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -19,7 +16,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",'.
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -19,7 +16,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",'.
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -27,7 +24,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",'.
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -16,7 +13,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",'.
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -111,7 +108,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,'.
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -24,7 +21,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 +44,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."'",
                 ) . ';',
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -14,7 +11,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",'.
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -22,7 +19,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",'.
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -22,7 +19,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 +28,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",'.
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -56,7 +53,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 +62,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 +75,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",'.
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -91,8 +88,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
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -76,7 +73,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 +84,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,5 @@
-
 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.1213';
 use strict;
 use warnings;
 
@@ -140,7 +136,7 @@ Moose::Meta::Method::Accessor - A Moose Method metaclass for accessors
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -74,7 +71,7 @@ Moose::Meta::Method::Augmented - A Moose Method metaclass for augmented methods
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,5 @@
-
 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.1213';
 use strict;
 use warnings;
 
@@ -76,7 +72,7 @@ Moose::Meta::Method::Constructor - Method Meta Object for constructors
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,5 @@
-
 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.1213';
 use strict;
 use warnings;
 
@@ -152,7 +148,7 @@ Moose::Meta::Method::Delegation - A Moose Method metaclass for delegation method
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,5 @@
-
 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.1213';
 use strict;
 use warnings;
 
@@ -148,7 +144,7 @@ Moose::Meta::Method::Destructor - Method Meta Object for destructors
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,5 @@
-
 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.1213';
 use strict;
 use warnings;
 
@@ -44,7 +40,7 @@ Moose::Meta::Method::Meta - A Moose Method metaclass for C<meta> methods
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -67,7 +64,7 @@ Moose::Meta::Method::Overridden - A Moose Method metaclass for overridden method
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,8 +1,5 @@
 package Moose::Meta::Method;
-BEGIN {
-  $Moose::Meta::Method::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Meta::Method::VERSION = '2.1204';
+$Moose::Meta::Method::VERSION = '2.1213';
 use strict;
 use warnings;
 
@@ -28,7 +25,7 @@ Moose::Meta::Method - A Moose Method metaclass
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -119,7 +116,7 @@ Moose::Meta::Mixin::AttributeCore - Core attributes shared by attribute metaclas
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,5 @@
-
 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.1213';
 use Scalar::Util qw(blessed);
 
 sub _get_compatible_metaclass {
@@ -43,7 +39,7 @@ Moose::Meta::Object::Trait - Some overrides for L<Class::MOP::Object> functional
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 use metaclass;
@@ -136,9 +133,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 +215,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 +270,7 @@ Moose::Meta::Role::Application::RoleSummation - Combine two or more roles
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 use metaclass;
@@ -41,15 +38,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 +88,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 +160,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 +225,7 @@ Moose::Meta::Role::Application::ToClass - Compose a role into a class
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 use metaclass;
@@ -54,7 +51,7 @@ Moose::Meta::Role::Application::ToInstance - Compose a role into an instance
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 use metaclass;
@@ -22,15 +19,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 +60,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 +108,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 +136,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 +148,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 +195,7 @@ Moose::Meta::Role::Application::ToRole - Compose a role into another role
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 use metaclass;
@@ -93,7 +90,7 @@ Moose::Meta::Role::Application - A base class for role application
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -142,7 +139,7 @@ Moose::Meta::Role::Attribute - The Moose attribute metaclass for Roles
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 use metaclass;
@@ -76,6 +73,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 +174,7 @@ Moose::Meta::Role::Composite - An object to represent the set of roles
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,5 @@
-
 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.1213';
 use strict;
 use warnings;
 
@@ -38,7 +34,7 @@ Moose::Meta::Role::Method::Conflicting - A Moose metaclass for conflicting metho
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,5 @@
-
 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.1213';
 use strict;
 use warnings;
 use metaclass;
@@ -40,7 +36,7 @@ Moose::Meta::Role::Method::Required - A Moose metaclass for required methods in
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,5 @@
-
 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.1213';
 use strict;
 use warnings;
 
@@ -36,7 +32,7 @@ Moose::Meta::Role::Method - A Moose Method metaclass for Roles
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,8 +1,5 @@
 package Moose::Meta::Role;
-BEGIN {
-  $Moose::Meta::Role::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Meta::Role::VERSION = '2.1204';
+$Moose::Meta::Role::VERSION = '2.1213';
 use strict;
 use warnings;
 use metaclass;
@@ -239,13 +236,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 +361,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 +402,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 +421,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 +442,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 +752,7 @@ Moose::Meta::Role - The Moose Role metaclass
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,5 @@
-
 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.1213';
 use strict;
 use warnings;
 use metaclass;
@@ -20,7 +16,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 +57,13 @@ Moose::Meta::TypeCoercion::Union - The Moose Type Coercion metaclass for Unions
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =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,5 @@
-
 package Moose::Meta::TypeCoercion;
-BEGIN {
-  $Moose::Meta::TypeCoercion::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Meta::TypeCoercion::VERSION = '2.1204';
+$Moose::Meta::TypeCoercion::VERSION = '2.1213';
 use strict;
 use warnings;
 use metaclass;
@@ -119,7 +115,7 @@ Moose::Meta::TypeCoercion - The Moose Type Coercion metaclass
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 use metaclass;
@@ -146,7 +143,7 @@ Moose::Meta::TypeConstraint::Class - Class/TypeConstraint parallel hierarchy
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 use metaclass;
@@ -119,7 +116,7 @@ Moose::Meta::TypeConstraint::DuckType - Type constraint for duck typing
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 use metaclass;
@@ -128,7 +125,7 @@ Moose::Meta::TypeConstraint::Enum - Type constraint for enumerated values.
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 use metaclass;
@@ -55,9 +52,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 +78,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 +115,7 @@ Moose::Meta::TypeConstraint::Parameterizable - Type constraints which can take a
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 use metaclass;
@@ -44,13 +41,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 +59,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 +115,7 @@ Moose::Meta::TypeConstraint::Parameterized - Type constraints with a bound param
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 METHODS
 
@@ -1,9 +1,5 @@
-
 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.1213';
 use strict;
 use warnings;
 use metaclass;
@@ -81,7 +77,7 @@ Moose::Meta::TypeConstraint::Registry - registry for type constraints
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 use metaclass;
@@ -126,7 +123,7 @@ Moose::Meta::TypeConstraint::Role - Role/TypeConstraint parallel hierarchy
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,5 @@
-
 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.1213';
 use strict;
 use warnings;
 use metaclass;
@@ -212,7 +208,7 @@ Moose::Meta::TypeConstraint::Union - A union of Moose type constraints
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,5 @@
-
 package Moose::Meta::TypeConstraint;
-BEGIN {
-  $Moose::Meta::TypeConstraint::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Meta::TypeConstraint::VERSION = '2.1204';
+$Moose::Meta::TypeConstraint::VERSION = '2.1213';
 use strict;
 use warnings;
 use metaclass;
@@ -141,7 +137,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 +185,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 +291,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 +375,7 @@ Moose::Meta::TypeConstraint - The Moose Type Constraint metaclass
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,9 +1,5 @@
-
 package Moose::Object;
-BEGIN {
-  $Moose::Object::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Object::VERSION = '2.1204';
+$Moose::Object::VERSION = '2.1213';
 use strict;
 use warnings;
 
@@ -122,7 +118,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 +146,7 @@ Moose::Object - The base object for Moose
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 DESCRIPTION
 
@@ -1,10 +1,7 @@
 use strict;
 use warnings;
 package Moose::Role;
-BEGIN {
-  $Moose::Role::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Role::VERSION = '2.1204';
+$Moose::Role::VERSION = '2.1213';
 use Scalar::Util 'blessed';
 use Carp         'croak';
 use Class::Load  'is_class_loaded';
@@ -29,21 +26,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 +57,7 @@ sub _add_method_modifier {
 
     if ( ref($_[0]) eq 'Regexp' ) {
         throw_exception( RolesDoNotSupportRegexReferencesForMethodModifiers => modifier_type => $type,
-                                                                               role          => $meta
+                                                                               role_name     => $meta->name,
                        );
     }
 
@@ -133,12 +130,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 +179,7 @@ Moose::Role - The Moose Role
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 SYNOPSIS
 
@@ -276,6 +271,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.1213
 
 =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.1213
 
 =head1 DESCRIPTION
 
@@ -1,8 +1,5 @@
 package Moose::Util::MetaRole;
-BEGIN {
-  $Moose::Util::MetaRole::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Util::MetaRole::VERSION = '2.1204';
+$Moose::Util::MetaRole::VERSION = '2.1213';
 use strict;
 use warnings;
 use Scalar::Util 'blessed';
@@ -82,8 +79,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 +130,7 @@ Moose::Util::MetaRole - Apply roles to any metaclass, as well as the object base
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 SYNOPSIS
 
@@ -1,8 +1,5 @@
 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.1213';
 use strict;
 use warnings;
 
@@ -305,4 +302,3 @@ __END__
 =for pod_coverage_needs_some_pod
 
 =cut
-
@@ -1,8 +1,5 @@
 package Moose::Util::TypeConstraints;
-BEGIN {
-  $Moose::Util::TypeConstraints::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Util::TypeConstraints::VERSION = '2.1204';
+$Moose::Util::TypeConstraints::VERSION = '2.1213';
 use Carp ();
 use List::MoreUtils qw( all any );
 use Scalar::Util qw( blessed reftype );
@@ -24,7 +21,6 @@ sub inline_as (&);
 
 ## --------------------------------------------------------
 
-use Moose::Deprecated;
 use Moose::Meta::TypeConstraint;
 use Moose::Meta::TypeConstraint::Union;
 use Moose::Meta::TypeConstraint::Parameterized;
@@ -160,7 +156,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 +189,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 +511,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 +550,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 +770,7 @@ Moose::Util::TypeConstraints - Type constraint system for Moose
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 SYNOPSIS
 
@@ -1,8 +1,5 @@
 package Moose::Util;
-BEGIN {
-  $Moose::Util::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::Util::VERSION = '2.1204';
+$Moose::Util::VERSION = '2.1213';
 use strict;
 use warnings;
 
@@ -19,6 +16,7 @@ use Try::Tiny;
 
 my @exports = qw[
     find_meta
+    is_role
     does_role
     search_class_by_role
     ensure_all_roles
@@ -57,6 +55,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 +541,7 @@ Moose::Util - Utilities for working with Moose classes
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 SYNOPSIS
 
@@ -566,6 +572,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
@@ -1,10 +1,9 @@
 use strict;
 use warnings;
 package Moose;
-BEGIN {
-  $Moose::AUTHORITY = 'cpan:STEVAN';
-}
-$Moose::VERSION = '2.1204';
+$Moose::VERSION = '2.1213';
+$Moose::AUTHORITY = 'cpan:STEVAN';
+
 use 5.008003;
 
 use Scalar::Util 'blessed';
@@ -48,7 +47,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 +300,7 @@ Moose - A postmodern object system for Perl 5
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 SYNOPSIS
 
@@ -915,11 +914,11 @@ respectively.
 
 Metaclass compatibility is a thorny subject. You should start by
 reading the "About Metaclass compatibility" section in the
-C<Class::MOP> docs.
+L<Class::MOP> docs.
 
 Moose will attempt to resolve a few cases of metaclass incompatibility
 when you set the superclasses for a class, in addition to the cases that
-C<Class::MOP> handles.
+L<Class::MOP> handles.
 
 Moose tries to determine if the metaclasses only "differ by roles". This
 means that the parent and child's metaclass share a common ancestor in
@@ -997,6 +996,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
@@ -1,8 +1,5 @@
 package Test::Moose;
-BEGIN {
-  $Test::Moose::AUTHORITY = 'cpan:STEVAN';
-}
-$Test::Moose::VERSION = '2.1204';
+$Test::Moose::VERSION = '2.1213';
 use strict;
 use warnings;
 
@@ -74,16 +71,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 +97,7 @@ Test::Moose - Test functions for Moose specific features
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 SYNOPSIS
 
@@ -1,21 +1,15 @@
-
 package metaclass;
-BEGIN {
-  $metaclass::AUTHORITY = 'cpan:STEVAN';
-}
-$metaclass::VERSION = '2.1204';
+$metaclass::VERSION = '2.1213';
 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 +26,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 +59,7 @@ metaclass - a pragma for installing and using Class::MOP metaclasses
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =head1 SYNOPSIS
 
@@ -1,8 +1,5 @@
 package oose;
-BEGIN {
-  $oose::AUTHORITY = 'cpan:STEVAN';
-}
-$oose::VERSION = '2.1204';
+$oose::VERSION = '2.1213';
 use strict;
 use warnings;
 
@@ -36,7 +33,7 @@ oose - syntactic sugar to make Moose one-liners easier
 
 =head1 VERSION
 
-version 2.1204
+version 2.1213
 
 =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.
@@ -0,0 +1,164 @@
+do { my $x = {
+       'configure' => {
+                        'requires' => {
+                                        'Dist::CheckConflicts' => '0.02',
+                                        'ExtUtils::CBuilder' => '0.27',
+                                        'ExtUtils::MakeMaker' => '0',
+                                        'File::Spec' => '0'
+                                      }
+                      },
+       'develop' => {
+                      'requires' => {
+                                      'Algorithm::C3' => '0',
+                                      'Class::Load' => '0.07',
+                                      'DBM::Deep' => '1.003',
+                                      'Data::Visitor' => '0',
+                                      'DateTime' => '0',
+                                      'DateTime::Calendar::Mayan' => '0',
+                                      'DateTime::Format::MySQL' => '0',
+                                      'Declare::Constraints::Simple' => '0',
+                                      '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::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.21',
+                                      '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::CheckChangesHasContent' => '0',
+                                      'Dist::Zilla::Plugin::CheckVersionIncrement' => '0',
+                                      'Dist::Zilla::Plugin::ConfirmRelease' => '0',
+                                      'Dist::Zilla::Plugin::Conflicts' => '0.16',
+                                      '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',
+                                      'Dist::Zilla::Plugin::Git::Commit' => '0',
+                                      'Dist::Zilla::Plugin::Git::Contributors' => '0',
+                                      'Dist::Zilla::Plugin::Git::Push' => '0',
+                                      'Dist::Zilla::Plugin::Git::Remote::Check' => '0',
+                                      'Dist::Zilla::Plugin::Git::Tag' => '0',
+                                      'Dist::Zilla::Plugin::License' => '0',
+                                      'Dist::Zilla::Plugin::MakeMaker::Awesome' => '0',
+                                      'Dist::Zilla::Plugin::Manifest' => '0',
+                                      'Dist::Zilla::Plugin::ManifestSkip' => '0',
+                                      'Dist::Zilla::Plugin::MetaConfig' => '0',
+                                      'Dist::Zilla::Plugin::MetaJSON' => '0',
+                                      'Dist::Zilla::Plugin::MetaNoIndex' => '0',
+                                      'Dist::Zilla::Plugin::MetaProvides::Package' => '1.15000002',
+                                      'Dist::Zilla::Plugin::MetaResources' => '0',
+                                      'Dist::Zilla::Plugin::MetaTests' => '0',
+                                      'Dist::Zilla::Plugin::MetaYAML' => '0',
+                                      'Dist::Zilla::Plugin::MojibakeTests' => '0',
+                                      'Dist::Zilla::Plugin::NextRelease' => '0',
+                                      'Dist::Zilla::Plugin::PkgVersion' => '5.010',
+                                      'Dist::Zilla::Plugin::PodSyntaxTests' => '0',
+                                      'Dist::Zilla::Plugin::PodWeaver' => '4.004',
+                                      'Dist::Zilla::Plugin::Prereqs' => '0',
+                                      'Dist::Zilla::Plugin::Prereqs::AuthorDeps' => '0',
+                                      'Dist::Zilla::Plugin::PromptIfStale' => '0',
+                                      'Dist::Zilla::Plugin::PruneCruft' => '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',
+                                      'File::Find::Rule' => '0',
+                                      'File::pushd' => '0',
+                                      'IPC::System::Simple' => '0',
+                                      'Path::Tiny' => '0',
+                                      'Pod::Elemental::PerlMunger' => '0.200001',
+                                      'Test::Inline' => '0',
+                                      'Test::Inline::Extract' => '0',
+                                      'inc::CheckReleaseType' => '0',
+                                      'inc::SimpleAuthority' => '0'
+                                    }
+                    },
+       'runtime' => {
+                      'recommends' => {
+                                        'Devel::PartialDump' => '0.14'
+                                      },
+                      'requires' => {
+                                      'Carp' => '1.22',
+                                      'Class::Load' => '0.09',
+                                      'Class::Load::XS' => '0.01',
+                                      'Data::OptList' => '0.107',
+                                      'Devel::GlobalDestruction' => '0',
+                                      'Devel::StackTrace' => '1.33',
+                                      'Dist::CheckConflicts' => '0.02',
+                                      'Eval::Closure' => '0.04',
+                                      'List::MoreUtils' => '0.28',
+                                      'MRO::Compat' => '0.05',
+                                      'Module::Runtime' => '0.014',
+                                      'Module::Runtime::Conflicts' => '0',
+                                      'Package::DeprecationManager' => '0.11',
+                                      'Package::Stash' => '0.32',
+                                      'Package::Stash::XS' => '0.24',
+                                      'Params::Util' => '1.00',
+                                      'Scalar::Util' => '1.19',
+                                      'Sub::Exporter' => '0.980',
+                                      'Sub::Name' => '0.05',
+                                      'Task::Weaken' => '0',
+                                      'Try::Tiny' => '0.02',
+                                      'parent' => '0.223',
+                                      'perl' => 'v5.8.3',
+                                      'strict' => '1.03',
+                                      'warnings' => '1.03'
+                                    }
+                    },
+       'test' => {
+                   'recommends' => {
+                                     'CPAN::Meta' => '2.120900'
+                                   },
+                   'requires' => {
+                                   'CPAN::Meta::Check' => '0.007',
+                                   'CPAN::Meta::Requirements' => '0',
+                                   'ExtUtils::MakeMaker' => '0',
+                                   'File::Spec' => '0',
+                                   'Test::CleanNamespaces' => '0.13',
+                                   'Test::Fatal' => '0.001',
+                                   'Test::More' => '0.88',
+                                   'Test::Requires' => '0.05'
+                                 }
+                 }
+     };
+  $x;
+ }
\ No newline at end of file
@@ -3,282 +3,192 @@
 use strict;
 use warnings;
 
-# This test was generated by Dist::Zilla::Plugin::Test::ReportPrereqs 0.013
+# This test was generated by Dist::Zilla::Plugin::Test::ReportPrereqs 0.019
 
 use Test::More tests => 1;
 
 use ExtUtils::MakeMaker;
-use File::Spec::Functions;
-use List::Util qw/max/;
-use version;
+use File::Spec;
+
+# from $version::LAX
+my $lax_version_re =
+    qr/(?: undef | (?: (?:[0-9]+) (?: \. | (?:\.[0-9]+) (?:_[0-9]+)? )?
+            |
+            (?:\.[0-9]+) (?:_[0-9]+)?
+        ) | (?:
+            v (?:[0-9]+) (?: (?:\.[0-9]+)+ (?:_[0-9]+)? )?
+            |
+            (?:[0-9]+)? (?:\.[0-9]+){2,} (?:_[0-9]+)?
+        )
+    )/x;
 
 # hide optional CPAN::Meta modules from prereq scanner
 # and check if they are available
 my $cpan_meta = "CPAN::Meta";
-my $cpan_meta_req = "CPAN::Meta::Requirements";
-my $HAS_CPAN_META = eval "require $cpan_meta"; ## no critic
-my $HAS_CPAN_META_REQ = eval "require $cpan_meta_req; $cpan_meta_req->VERSION('2.120900')";
+my $cpan_meta_pre = "CPAN::Meta::Prereqs";
+my $HAS_CPAN_META = eval "require $cpan_meta; $cpan_meta->VERSION('2.120900')" && eval "require $cpan_meta_pre"; ## no critic
 
 # Verify requirements?
 my $DO_VERIFY_PREREQS = 1;
 
-sub _merge_requires {
+sub _max {
+    my $max = shift;
+    $max = ( $_ > $max ) ? $_ : $max for @_;
+    return $max;
+}
+
+sub _merge_prereqs {
     my ($collector, $prereqs) = @_;
-    for my $phase ( qw/configure build test runtime develop/ ) {
-        next unless exists $prereqs->{$phase};
-        if ( my $req = $prereqs->{$phase}{'requires'} ) {
-            my $cmr = CPAN::Meta::Requirements->from_string_hash( $req );
-            $collector->add_requirements( $cmr );
+
+    # CPAN::Meta::Prereqs object
+    if (ref $collector eq $cpan_meta_pre) {
+        return $collector->with_merged_prereqs(
+            CPAN::Meta::Prereqs->new( $prereqs )
+        );
+    }
+
+    # Raw hashrefs
+    for my $phase ( keys %$prereqs ) {
+        for my $type ( keys %{ $prereqs->{$phase} } ) {
+            for my $module ( keys %{ $prereqs->{$phase}{$type} } ) {
+                $collector->{$phase}{$type}{$module} = $prereqs->{$phase}{$type}{$module};
+            }
         }
     }
-}
 
-my %include = map {; $_ => 1 } qw(
+    return $collector;
+}
 
+my @include = 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(
+my @exclude = qw(
 
 );
 
 # Add static prereqs to the included modules list
-my $static_prereqs = do { my $x = {
-       'configure' => {
-                        'requires' => {
-                                        'Dist::CheckConflicts' => '0.02',
-                                        'ExtUtils::CBuilder' => '0.27',
-                                        'ExtUtils::MakeMaker' => '6.30',
-                                        'File::Spec' => '0'
-                                      }
-                      },
-       'develop' => {
-                      'conflicts' => {
-                                       'Dist::Zilla::Plugin::Conflicts' => '== 0.11'
-                                     },
-                      'requires' => {
-                                      'Algorithm::C3' => '0',
-                                      'CPAN::Meta::Requirements' => '0',
-                                      'Class::Load' => '0.07',
-                                      'DBM::Deep' => '0',
-                                      'Data::Visitor' => '0',
-                                      'DateTime' => '0',
-                                      'DateTime::Calendar::Mayan' => '0',
-                                      'DateTime::Format::MySQL' => '0',
-                                      'Declare::Constraints::Simple' => '0',
-                                      'Dist::Zilla' => '5.012',
-                                      'Dist::Zilla::Plugin::Authority' => '0',
-                                      'Dist::Zilla::Plugin::CheckChangesHasContent' => '0',
-                                      'Dist::Zilla::Plugin::ConfirmRelease' => '0',
-                                      'Dist::Zilla::Plugin::Conflicts' => '0',
-                                      'Dist::Zilla::Plugin::ContributorsFromGit' => '0',
-                                      'Dist::Zilla::Plugin::EOLTests' => '0',
-                                      'Dist::Zilla::Plugin::ExecDir' => '0',
-                                      'Dist::Zilla::Plugin::GatherDir' => '0',
-                                      'Dist::Zilla::Plugin::Git::Check' => '0',
-                                      'Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch' => '0',
-                                      'Dist::Zilla::Plugin::Git::Commit' => '0',
-                                      'Dist::Zilla::Plugin::Git::Push' => '0',
-                                      'Dist::Zilla::Plugin::Git::Remote::Check' => '0',
-                                      'Dist::Zilla::Plugin::Git::Tag' => '0',
-                                      'Dist::Zilla::Plugin::License' => '0',
-                                      'Dist::Zilla::Plugin::MakeMaker::Awesome' => '0',
-                                      'Dist::Zilla::Plugin::Manifest' => '0',
-                                      'Dist::Zilla::Plugin::ManifestSkip' => '0',
-                                      'Dist::Zilla::Plugin::MetaConfig' => '0',
-                                      'Dist::Zilla::Plugin::MetaJSON' => '0',
-                                      'Dist::Zilla::Plugin::MetaNoIndex' => '0',
-                                      'Dist::Zilla::Plugin::MetaProvides::Package' => '1.15000002',
-                                      'Dist::Zilla::Plugin::MetaResources' => '0',
-                                      'Dist::Zilla::Plugin::MetaTests' => '0',
-                                      'Dist::Zilla::Plugin::MetaYAML' => '0',
-                                      'Dist::Zilla::Plugin::MojibakeTests' => '0',
-                                      'Dist::Zilla::Plugin::NextRelease' => '0',
-                                      'Dist::Zilla::Plugin::PkgVersion' => '0',
-                                      'Dist::Zilla::Plugin::PodSyntaxTests' => '0',
-                                      'Dist::Zilla::Plugin::PodWeaver' => '4.004',
-                                      'Dist::Zilla::Plugin::Prereqs' => '0',
-                                      '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::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'
-                                    }
-                    },
-       'runtime' => {
-                      'recommends' => {
-                                        'Devel::PartialDump' => '0.14'
-                                      },
-                      'requires' => {
-                                      'Carp' => '1.22',
-                                      'Class::Load' => '0.09',
-                                      'Class::Load::XS' => '0.01',
-                                      'Data::OptList' => '0.107',
-                                      'Devel::GlobalDestruction' => '0',
-                                      'Devel::StackTrace' => '1.30',
-                                      'Dist::CheckConflicts' => '0.02',
-                                      'Eval::Closure' => '0.04',
-                                      'List::MoreUtils' => '0.28',
-                                      'MRO::Compat' => '0.05',
-                                      'Module::Runtime' => '0.014',
-                                      'Package::DeprecationManager' => '0.11',
-                                      'Package::Stash' => '0.32',
-                                      'Package::Stash::XS' => '0.24',
-                                      'Params::Util' => '1.00',
-                                      'Scalar::Util' => '1.19',
-                                      'Sub::Exporter' => '0.980',
-                                      'Sub::Name' => '0.05',
-                                      'Task::Weaken' => '0',
-                                      'Try::Tiny' => '0.02',
-                                      'parent' => '0.223',
-                                      'perl' => 'v5.8.3'
-                                    }
-                    },
-       'test' => {
-                   'recommends' => {
-                                     'CPAN::Meta' => '0',
-                                     'CPAN::Meta::Requirements' => '2.120900'
-                                   },
-                   'requires' => {
-                                   'Test::Fatal' => '0.001',
-                                   'Test::More' => '0.88',
-                                   'Test::Requires' => '0.05'
-                                 }
-                 }
-     };
-  $x;
- };
-
-delete $static_prereqs->{develop} if not $ENV{AUTHOR_TESTING};
-$include{$_} = 1 for map { keys %$_ } map { values %$_ } values %$static_prereqs;
-
-# Merge requirements for major phases (if we can)
-my $all_requires;
-if ( $DO_VERIFY_PREREQS && $HAS_CPAN_META_REQ ) {
-    $all_requires = $cpan_meta_req->new;
-    _merge_requires($all_requires, $static_prereqs);
-}
+my $static_prereqs = do 't/00-report-prereqs.dd';
 
+# Merge all prereqs (either with ::Prereqs or a hashref)
+my $full_prereqs = _merge_prereqs(
+    ( $HAS_CPAN_META ? $cpan_meta_pre->new : {} ),
+    $static_prereqs
+);
 
 # Add dynamic prereqs to the included modules list (if we can)
 my ($source) = grep { -f } 'MYMETA.json', 'MYMETA.yml';
 if ( $source && $HAS_CPAN_META ) {
-  if ( my $meta = eval { CPAN::Meta->load_file($source) } ) {
-    my $dynamic_prereqs = $meta->prereqs;
-    delete $dynamic_prereqs->{develop} if not $ENV{AUTHOR_TESTING};
-    $include{$_} = 1 for map { keys %$_ } map { values %$_ } values %$dynamic_prereqs;
-
-    if ( $DO_VERIFY_PREREQS && $HAS_CPAN_META_REQ ) {
-        _merge_requires($all_requires, $dynamic_prereqs);
+    if ( my $meta = eval { CPAN::Meta->load_file($source) } ) {
+        $full_prereqs = _merge_prereqs($full_prereqs, $meta->prereqs);
     }
-  }
 }
 else {
-  $source = 'static metadata';
+    $source = 'static metadata';
 }
 
-my @modules = sort grep { ! $exclude{$_} } keys %include;
-my @reports = [qw/Version Module/];
+my @full_reports;
 my @dep_errors;
-my $req_hash = defined($all_requires) ? $all_requires->as_string_hash : {};
-
-for my $mod ( @modules ) {
-  next if $mod eq 'perl';
-  my $file = $mod;
-  $file =~ s{::}{/}g;
-  $file .= ".pm";
-  my ($prefix) = grep { -e catfile($_, $file) } @INC;
-  if ( $prefix ) {
-    my $ver = MM->parse_version( catfile($prefix, $file) );
-    $ver = "undef" unless defined $ver; # Newer MM should do this anyway
-    push @reports, [$ver, $mod];
-
-    if ( $DO_VERIFY_PREREQS && $all_requires ) {
-      my $req = $req_hash->{$mod};
-      if ( defined $req && length $req ) {
-        if ( ! defined eval { version->parse($ver) } ) {
-          push @dep_errors, "$mod version '$ver' cannot be parsed (version '$req' required)";
-        }
-        elsif ( ! $all_requires->accepts_module( $mod => $ver ) ) {
-          push @dep_errors, "$mod version '$ver' is not in required range '$req'";
+my $req_hash = $HAS_CPAN_META ? $full_prereqs->as_string_hash : $full_prereqs;
+
+# Add static includes into a fake section
+for my $mod (@include) {
+    $req_hash->{other}{modules}{$mod} = 0;
+}
+
+for my $phase ( qw(configure build test runtime develop other) ) {
+    next unless $req_hash->{$phase};
+    next if ($phase eq 'develop' and not $ENV{AUTHOR_TESTING});
+
+    for my $type ( qw(requires recommends suggests conflicts modules) ) {
+        next unless $req_hash->{$phase}{$type};
+
+        my $title = ucfirst($phase).' '.ucfirst($type);
+        my @reports = [qw/Module Want Have/];
+
+        for my $mod ( sort keys %{ $req_hash->{$phase}{$type} } ) {
+            next if $mod eq 'perl';
+            next if grep { $_ eq $mod } @exclude;
+
+            my $file = $mod;
+            $file =~ s{::}{/}g;
+            $file .= ".pm";
+            my ($prefix) = grep { -e File::Spec->catfile($_, $file) } @INC;
+
+            my $want = $req_hash->{$phase}{$type}{$mod};
+            $want = "undef" unless defined $want;
+            $want = "any" if !$want && $want == 0;
+
+            my $req_string = $want eq 'any' ? 'any version required' : "version '$want' required";
+
+            if ($prefix) {
+                my $have = MM->parse_version( File::Spec->catfile($prefix, $file) );
+                $have = "undef" unless defined $have;
+                push @reports, [$mod, $want, $have];
+
+                if ( $DO_VERIFY_PREREQS && $HAS_CPAN_META && $type eq 'requires' ) {
+                    if ( $have !~ /\A$lax_version_re\z/ ) {
+                        push @dep_errors, "$mod version '$have' cannot be parsed ($req_string)";
+                    }
+                    elsif ( ! $full_prereqs->requirements_for( $phase, $type )->accepts_module( $mod => $have ) ) {
+                        push @dep_errors, "$mod version '$have' is not in required range '$want'";
+                    }
+                }
+            }
+            else {
+                push @reports, [$mod, $want, "missing"];
+
+                if ( $DO_VERIFY_PREREQS && $type eq 'requires' ) {
+                    push @dep_errors, "$mod is not installed ($req_string)";
+                }
+            }
         }
-      }
-    }
 
-  }
-  else {
-    push @reports, ["missing", $mod];
+        if ( @reports ) {
+            push @full_reports, "=== $title ===\n\n";
 
-    if ( $DO_VERIFY_PREREQS && $all_requires ) {
-      my $req = $req_hash->{$mod};
-      if ( defined $req && length $req ) {
-        push @dep_errors, "$mod is not installed (version '$req' required)";
-      }
+            my $ml = _max( map { length $_->[0] } @reports );
+            my $wl = _max( map { length $_->[1] } @reports );
+            my $hl = _max( map { length $_->[2] } @reports );
+            splice @reports, 1, 0, ["-" x $ml, "-" x $wl, "-" x $hl];
+
+            push @full_reports, map { sprintf("    %*s %*s %*s\n", -$ml, $_->[0], $wl, $_->[1], $hl, $_->[2]) } @reports;
+            push @full_reports, "\n";
+        }
     }
-  }
 }
 
-if ( @reports ) {
-  my $vl = max map { length $_->[0] } @reports;
-  my $ml = max map { length $_->[1] } @reports;
-  splice @reports, 1, 0, ["-" x $vl, "-" x $ml];
-  diag "\nVersions for all modules listed in $source (including optional ones):\n",
-    map {sprintf("  %*s %*s\n",$vl,$_->[0],-$ml,$_->[1])} @reports;
+if ( @full_reports ) {
+    diag "\nVersions for all modules listed in $source (including optional ones):\n\n", @full_reports;
 }
 
 if ( @dep_errors ) {
-  diag join("\n",
-    "\n*** WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING ***\n",
-    "The following REQUIRED prerequisites were not satisfied:\n",
-    @dep_errors,
-    "\n"
-  );
+    diag join("\n",
+        "\n*** WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING ***\n",
+        "The following REQUIRED prerequisites were not satisfied:\n",
+        @dep_errors,
+        "\n"
+    );
 }
 
 pass;
@@ -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;
@@ -7,7 +9,7 @@ use Test::More;
 
     eval '$foo = 5;';
     ::ok($@, '... got an error because strict is on');
-    ::like($@, qr/Global symbol \"\$foo\" requires explicit package name at/, '... got the right error');
+    ::like($@, qr/Global symbol \"\$foo\" requires explicit package name /, '... got the right error');
 
     {
         my $warn;
@@ -29,7 +31,7 @@ use Test::More;
 
     eval '$foo = 5;';
     ::ok($@, '... got an error because strict is on');
-    ::like($@, qr/Global symbol \"\$foo\" requires explicit package name at/, '... got the right error');
+    ::like($@, qr/Global symbol \"\$foo\" requires explicit package name /, '... got the right error');
 
     {
         my $warn;
@@ -51,7 +53,7 @@ use Test::More;
 
     eval '$foo = 5;';
     ::ok($@, '... got an error because strict is on');
-    ::like($@, qr/Global symbol \"\$foo\" requires explicit package name at/, '... got the right error');
+    ::like($@, qr/Global symbol \"\$foo\" requires explicit package name /, '... got the right error');
 
     {
         my $warn;
@@ -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;
@@ -4,66 +4,66 @@ use warnings;
 use Test::More;
 
 {
-    package A;
+    package First;
     use Moose;
 
     sub foo {
-        ::BAIL_OUT('A::foo called twice') if $main::seen{'A::foo'}++;
-        return 'a';
+        ::BAIL_OUT('First::foo called twice') if $main::seen{'First::foo'}++;
+        return '1';
     }
 
     sub bar {
-        ::BAIL_OUT('A::bar called twice') if $main::seen{'A::bar'}++;
-        return 'a';
+        ::BAIL_OUT('First::bar called twice') if $main::seen{'First::bar'}++;
+        return '1';
     }
 
     sub baz {
-        ::BAIL_OUT('A::baz called twice') if $main::seen{'A::baz'}++;
-        return 'a';
+        ::BAIL_OUT('First::baz called twice') if $main::seen{'First::baz'}++;
+        return '1';
     }
 }
 
 {
-    package B;
+    package Second;
     use Moose;
-    extends qw(A);
+    extends qw(First);
 
     sub foo {
-        ::BAIL_OUT('B::foo called twice') if $main::seen{'B::foo'}++;
-        return 'b' . super();
+        ::BAIL_OUT('Second::foo called twice') if $main::seen{'Second::foo'}++;
+        return '2' . super();
     }
 
     sub bar {
-        ::BAIL_OUT('B::bar called twice') if $main::seen{'B::bar'}++;
-        return 'b' . ( super() || '' );
+        ::BAIL_OUT('Second::bar called twice') if $main::seen{'Second::bar'}++;
+        return '2' . ( super() || '' );
     }
 
     override baz => sub {
-        ::BAIL_OUT('B::baz called twice') if $main::seen{'B::baz'}++;
-        return 'b' . super();
+        ::BAIL_OUT('Second::baz called twice') if $main::seen{'Second::baz'}++;
+        return '2' . super();
     };
 }
 
 {
-    package C;
+    package Third;
     use Moose;
-    extends qw(B);
+    extends qw(Second);
 
-    sub foo { return 'c' . ( super() || '' ) }
+    sub foo { return '3' . ( super() || '' ) }
 
     override bar => sub {
-        ::BAIL_OUT('C::bar called twice') if $main::seen{'C::bar'}++;
-        return 'c' . super();
+        ::BAIL_OUT('Third::bar called twice') if $main::seen{'Third::bar'}++;
+        return '3' . super();
     };
 
     override baz => sub {
-        ::BAIL_OUT('C::baz called twice') if $main::seen{'C::baz'}++;
-        return 'c' . super();
+        ::BAIL_OUT('Third::baz called twice') if $main::seen{'Third::baz'}++;
+        return '3' . super();
     };
 }
 
-is( C->new->foo, 'c' );
-is( C->new->bar, 'cb' );
-is( C->new->baz, 'cba' );
+is( Third->new->foo, '3' );
+is( Third->new->bar, '32' );
+is( Third->new->baz, '321' );
 
 done_testing;
@@ -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;
 
@@ -56,6 +56,8 @@ my $anon_class_id;
     ok(exists $main::Class::MOP::Class::__ANON__::SERIAL::{$anon_class_id . '::'}, '... the package still exists');
 }
 
+local $TODO = "anon class doesn't get GCed under Devel::Cover" if $INC{'Devel/Cover.pm'};
+
 ok(!exists $main::Class::MOP::Class::__ANON__::SERIAL::{$anon_class_id . '::'}, '... the package no longer exists');
 
 # but it breaks down when we try to create another one ...
@@ -1,12 +1,14 @@
 use strict;
 use warnings;
 
-use Class::MOP;
 use Test::More;
+use Test::Requires 'Test::LeakTrace';   # skip all if not installed
+
+BEGIN {
+    plan skip_all => 'Leak tests fail under Devel::Cover' if $INC{'Devel/Cover.pm'};
+}
 
-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;
@@ -0,0 +1,23 @@
+use strict;
+use warnings;
+
+use Test::More;
+use Test::Fatal;
+use Test::Requires 'Test::Memory::Cycle';
+
+BEGIN {
+    plan skip_all => 'Leak tests fail under Devel::Cover' if $INC{'Devel/Cover.pm'};
+}
+
+{
+    package Foo;
+    use Moose;
+    has myattr => ( is => 'ro', required => 1 );
+}
+
+memory_cycle_ok(
+    exception { Foo->new() },
+    'exception objects do not leak arguments into Devel::StackTrace objects',
+);
+
+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;
-
@@ -0,0 +1,44 @@
+use strict;
+use warnings;
+
+use Test::CleanNamespaces;
+use Test::More;
+
+{
+    package Metarole;
+    use Moose::Role;
+}
+
+$::HAS_NC_AC = 0;
+
+{
+    package Foo;
+    use Moose ();
+    use Moose::Exporter;
+    {
+        local $@;
+        eval 'use namespace::autoclean; $::HAS_NC_AC = 1';
+    }
+
+    Moose::Exporter->setup_import_methods(
+        also            => 'Moose',
+        class_metaroles => { class => ['Metarole'] },
+    );
+
+    my $meta = Class::MOP::Package->initialize(__PACKAGE__);
+    for my $name (qw( import unimport init_meta )) {
+        my $body = $meta->get_package_symbol( '&' . $name );
+        my ( $package, $sub_name ) = Class::MOP::get_code_info($body);
+
+        ::is( $package, __PACKAGE__, "$name sub is in Foo package" );
+        ::is( $sub_name, $name, "$name sub has that name, not __ANON__" );
+    }
+}
+
+if ($::HAS_NC_AC) {
+    $INC{'Foo.pm'} = 1;
+    namespaces_clean('Foo');
+}
+
+done_testing();
+
@@ -15,7 +15,7 @@ use Test::More;
     no Moose;
 }
 can_ok('Foo', 'meta');
-is(Foo->meta, Class::MOP::class_of('Foo'));
+is(Foo->meta, Class::MOP::class_of('Foo'), 'Foo is a class_of Foo, via Foo->meta');
 isa_ok(Foo->meta->get_method('meta'), 'Moose::Meta::Method::Meta');
 
 {
@@ -24,9 +24,9 @@ isa_ok(Foo->meta->get_method('meta'), 'Moose::Meta::Method::Meta');
     extends 'Base';
     no Moose;
 }
-ok(!Bar->can('meta'));
+ok(!Bar->can('meta'), 'Bar->cant(\'meta\')');
 can_ok('Bar', 'bar_meta');
-is(Bar->bar_meta, Class::MOP::class_of('Bar'));
+is(Bar->bar_meta, Class::MOP::class_of('Bar'), 'Bar is a class_of Bar, via Bar->bar_meta');
 isa_ok(Bar->bar_meta->get_method('bar_meta'), 'Moose::Meta::Method::Meta');
 
 {
@@ -35,11 +35,14 @@ isa_ok(Bar->bar_meta->get_method('bar_meta'), 'Moose::Meta::Method::Meta');
     extends 'Base';
     no Moose;
 }
-ok(!Baz->can('meta'));
+ok(!Baz->can('meta'), 'Baz->cant(\'meta\')');
 
 my $universal_method_count = scalar Class::MOP::class_of('UNIVERSAL')->get_all_methods;
 # 1 because of the dummy method we installed in Base
-is( ( scalar Class::MOP::class_of('Baz')->get_all_methods )
-    - $universal_method_count, 1 );
+is(
+    ( scalar Class::MOP::class_of('Baz')->get_all_methods ) - $universal_method_count,
+    1,
+    'Baz has one method',
+);
 
 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,98 @@
+use strict;
+use warnings;
+
+# this test was generated with Dist::Zilla::Plugin::Test::CheckBreaks 0.011
+
+use Test::More 0.88;
+
+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;
@@ -0,0 +1,251 @@
+/*
+ * This file was generated automatically by ExtUtils::ParseXS version 3.25 from the
+ * contents of ToInstance.xs. Do not edit this file, edit ToInstance.xs instead.
+ *
+ *    ANY CHANGES MADE HERE WILL BE LOST!
+ *
+ */
+
+#line 1 "xs/ToInstance.xs"
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+static void
+S_reset_amagic (pTHX_ SV *rv, const bool on)
+{
+    /* It is assumed that you've already turned magic on/off on rv  */
+
+    SV *sva;
+    SV *const target = SvRV (rv);
+
+    /* Less 1 for the reference we've already dealt with.  */
+    U32 how_many = SvREFCNT (target) - 1;
+    MAGIC *mg;
+
+    if (SvMAGICAL (target) && (mg = mg_find (target, PERL_MAGIC_backref))) {
+        /* Back references also need to be found, but aren't part of the target's reference count. */
+        how_many += 1 + av_len ((AV *)mg->mg_obj);
+    }
+
+    if (!how_many) {
+        /* There was only 1 reference to this object.  */
+        return;
+    }
+
+    for (sva = PL_sv_arenaroot; sva; sva = (SV *)SvANY (sva)) {
+        register const SV *const svend = &sva[SvREFCNT (sva)];
+        register SV *sv;
+        for (sv = sva + 1; sv < svend; ++sv) {
+            if (SvTYPE (sv) != SVTYPEMASK
+             && ((sv->sv_flags & SVf_ROK) == SVf_ROK)
+             && SvREFCNT (sv)
+             && SvRV (sv) == target
+             && sv != rv) {
+                if (on) {
+                    SvAMAGIC_on (sv);
+                }
+                else {
+                    SvAMAGIC_off (sv);
+                }
+
+                if (--how_many == 0) {
+                    /* We have found them all. */
+                    return;
+                }
+            }
+        }
+    }
+}
+
+#line 62 "xs/ToInstance.c"
+#ifndef PERL_UNUSED_VAR
+#  define PERL_UNUSED_VAR(var) if (0) var = var
+#endif
+
+#ifndef dVAR
+#  define dVAR		dNOOP
+#endif
+
+
+/* This stuff is not part of the API! You have been warned. */
+#ifndef PERL_VERSION_DECIMAL
+#  define PERL_VERSION_DECIMAL(r,v,s) (r*1000000 + v*1000 + s)
+#endif
+#ifndef PERL_DECIMAL_VERSION
+#  define PERL_DECIMAL_VERSION \
+	  PERL_VERSION_DECIMAL(PERL_REVISION,PERL_VERSION,PERL_SUBVERSION)
+#endif
+#ifndef PERL_VERSION_GE
+#  define PERL_VERSION_GE(r,v,s) \
+	  (PERL_DECIMAL_VERSION >= PERL_VERSION_DECIMAL(r,v,s))
+#endif
+#ifndef PERL_VERSION_LE
+#  define PERL_VERSION_LE(r,v,s) \
+	  (PERL_DECIMAL_VERSION <= PERL_VERSION_DECIMAL(r,v,s))
+#endif
+
+/* XS_INTERNAL is the explicit static-linkage variant of the default
+ * XS macro.
+ *
+ * XS_EXTERNAL is the same as XS_INTERNAL except it does not include
+ * "STATIC", ie. it exports XSUB symbols. You probably don't want that
+ * for anything but the BOOT XSUB.
+ *
+ * See XSUB.h in core!
+ */
+
+
+/* TODO: This might be compatible further back than 5.10.0. */
+#if PERL_VERSION_GE(5, 10, 0) && PERL_VERSION_LE(5, 15, 1)
+#  undef XS_EXTERNAL
+#  undef XS_INTERNAL
+#  if defined(__CYGWIN__) && defined(USE_DYNAMIC_LOADING)
+#    define XS_EXTERNAL(name) __declspec(dllexport) XSPROTO(name)
+#    define XS_INTERNAL(name) STATIC XSPROTO(name)
+#  endif
+#  if defined(__SYMBIAN32__)
+#    define XS_EXTERNAL(name) EXPORT_C XSPROTO(name)
+#    define XS_INTERNAL(name) EXPORT_C STATIC XSPROTO(name)
+#  endif
+#  ifndef XS_EXTERNAL
+#    if defined(HASATTRIBUTE_UNUSED) && !defined(__cplusplus)
+#      define XS_EXTERNAL(name) void name(pTHX_ CV* cv __attribute__unused__)
+#      define XS_INTERNAL(name) STATIC void name(pTHX_ CV* cv __attribute__unused__)
+#    else
+#      ifdef __cplusplus
+#        define XS_EXTERNAL(name) extern "C" XSPROTO(name)
+#        define XS_INTERNAL(name) static XSPROTO(name)
+#      else
+#        define XS_EXTERNAL(name) XSPROTO(name)
+#        define XS_INTERNAL(name) STATIC XSPROTO(name)
+#      endif
+#    endif
+#  endif
+#endif
+
+/* perl >= 5.10.0 && perl <= 5.15.1 */
+
+
+/* The XS_EXTERNAL macro is used for functions that must not be static
+ * like the boot XSUB of a module. If perl didn't have an XS_EXTERNAL
+ * macro defined, the best we can do is assume XS is the same.
+ * Dito for XS_INTERNAL.
+ */
+#ifndef XS_EXTERNAL
+#  define XS_EXTERNAL(name) XS(name)
+#endif
+#ifndef XS_INTERNAL
+#  define XS_INTERNAL(name) XS(name)
+#endif
+
+/* Now, finally, after all this mess, we want an ExtUtils::ParseXS
+ * internal macro that we're free to redefine for varying linkage due
+ * to the EXPORT_XSUB_SYMBOLS XS keyword. This is internal, use
+ * XS_EXTERNAL(name) or XS_INTERNAL(name) in your code if you need to!
+ */
+
+#undef XS_EUPXS
+#if defined(PERL_EUPXS_ALWAYS_EXPORT)
+#  define XS_EUPXS(name) XS_EXTERNAL(name)
+#else
+   /* default to internal */
+#  define XS_EUPXS(name) XS_INTERNAL(name)
+#endif
+
+#ifndef PERL_ARGS_ASSERT_CROAK_XS_USAGE
+#define PERL_ARGS_ASSERT_CROAK_XS_USAGE assert(cv); assert(params)
+
+/* prototype to pass -Wmissing-prototypes */
+STATIC void
+S_croak_xs_usage(pTHX_ const CV *const cv, const char *const params);
+
+STATIC void
+S_croak_xs_usage(pTHX_ const CV *const cv, const char *const params)
+{
+    const GV *const gv = CvGV(cv);
+
+    PERL_ARGS_ASSERT_CROAK_XS_USAGE;
+
+    if (gv) {
+        const char *const gvname = GvNAME(gv);
+        const HV *const stash = GvSTASH(gv);
+        const char *const hvname = stash ? HvNAME(stash) : NULL;
+
+        if (hvname)
+            Perl_croak(aTHX_ "Usage: %s::%s(%s)", hvname, gvname, params);
+        else
+            Perl_croak(aTHX_ "Usage: %s(%s)", gvname, params);
+    } else {
+        /* Pants. I don't think that it should be possible to get here. */
+        Perl_croak(aTHX_ "Usage: CODE(0x%"UVxf")(%s)", PTR2UV(cv), params);
+    }
+}
+#undef  PERL_ARGS_ASSERT_CROAK_XS_USAGE
+
+#ifdef PERL_IMPLICIT_CONTEXT
+#define croak_xs_usage(a,b)    S_croak_xs_usage(aTHX_ a,b)
+#else
+#define croak_xs_usage        S_croak_xs_usage
+#endif
+
+#endif
+
+/* NOTE: the prototype of newXSproto() is different in versions of perls,
+ * so we define a portable version of newXSproto()
+ */
+#ifdef newXS_flags
+#define newXSproto_portable(name, c_impl, file, proto) newXS_flags(name, c_impl, file, proto, 0)
+#else
+#define newXSproto_portable(name, c_impl, file, proto) (PL_Sv=(SV*)newXS(name, c_impl, file), sv_setpv(PL_Sv, proto), (CV*)PL_Sv)
+#endif /* !defined(newXS_flags) */
+
+#line 204 "xs/ToInstance.c"
+
+XS_EUPXS(XS_Moose__Meta__Role__Application__ToInstance__reset_amagic); /* prototype to pass -Wmissing-prototypes */
+XS_EUPXS(XS_Moose__Meta__Role__Application__ToInstance__reset_amagic)
+{
+    dVAR; dXSARGS;
+    if (items != 1)
+       croak_xs_usage(cv,  "rv");
+    {
+	SV *	rv = ST(0)
+;
+#line 60 "xs/ToInstance.xs"
+        if (Gv_AMG (SvSTASH (SvRV (rv))) && !SvAMAGIC (rv)) {
+            SvAMAGIC_on (rv);
+            S_reset_amagic (aTHX_ rv, TRUE);
+        }
+#line 220 "xs/ToInstance.c"
+    }
+    XSRETURN_EMPTY;
+}
+
+#ifdef __cplusplus
+extern "C"
+#endif
+XS_EXTERNAL(boot_Moose__Meta__Role__Application__ToInstance); /* prototype to pass -Wmissing-prototypes */
+XS_EXTERNAL(boot_Moose__Meta__Role__Application__ToInstance)
+{
+    dVAR; dXSARGS;
+#if (PERL_REVISION == 5 && PERL_VERSION < 9)
+    char* file = __FILE__;
+#else
+    const char* file = __FILE__;
+#endif
+
+    PERL_UNUSED_VAR(cv); /* -W */
+    PERL_UNUSED_VAR(items); /* -W */
+#ifdef XS_APIVERSION_BOOTCHECK
+    XS_APIVERSION_BOOTCHECK;
+#endif
+    XS_VERSION_BOOTCHECK;
+
+        newXS("Moose::Meta::Role::Application::ToInstance::_reset_amagic", XS_Moose__Meta__Role__Application__ToInstance__reset_amagic, file);
+#if (PERL_REVISION == 5 && PERL_VERSION >= 9)
+  if (PL_unitcheckav)
+       call_list(PL_scopestack_ix, PL_unitcheckav);
+#endif
+    XSRETURN_YES;
+}
+
@@ -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;
@@ -2,9 +2,13 @@ use strict;
 use warnings;
 
 use Test::More;
-use Test::LeakTrace 0.01;
+use Test::LeakTrace;
 use Test::Memory::Cycle;
 
+BEGIN {
+    plan skip_all => 'Leak tests fail under Devel::Cover' if $INC{'Devel/Cover.pm'};
+}
+
 use Moose ();
 use Moose::Util qw( apply_all_roles );
 use Moose::Util::TypeConstraints;
@@ -15,12 +19,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 +170,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,938 @@
+use strict;
+use warnings;
+
+# this test was generated with Dist::Zilla::Plugin::Test::NoTabs 0.09
+
+use Test::More 0.88;
+use Test::NoTabs;
+
+my @files = (
+    'bin/moose-outdated',
+    'lib/Class/MOP.pm',
+    'lib/Class/MOP/Attribute.pm',
+    'lib/Class/MOP/Class.pm',
+    'lib/Class/MOP/Class/Immutable/Trait.pm',
+    'lib/Class/MOP/Deprecated.pm',
+    'lib/Class/MOP/Instance.pm',
+    'lib/Class/MOP/Method.pm',
+    'lib/Class/MOP/Method/Accessor.pm',
+    'lib/Class/MOP/Method/Constructor.pm',
+    'lib/Class/MOP/Method/Generated.pm',
+    'lib/Class/MOP/Method/Inlined.pm',
+    'lib/Class/MOP/Method/Meta.pm',
+    'lib/Class/MOP/Method/Overload.pm',
+    'lib/Class/MOP/Method/Wrapped.pm',
+    'lib/Class/MOP/MiniTrait.pm',
+    'lib/Class/MOP/Mixin.pm',
+    'lib/Class/MOP/Mixin/AttributeCore.pm',
+    'lib/Class/MOP/Mixin/HasAttributes.pm',
+    'lib/Class/MOP/Mixin/HasMethods.pm',
+    'lib/Class/MOP/Module.pm',
+    'lib/Class/MOP/Object.pm',
+    'lib/Class/MOP/Package.pm',
+    'lib/Moose.pm',
+    'lib/Moose/Conflicts.pm',
+    'lib/Moose/Cookbook.pod',
+    'lib/Moose/Cookbook/Basics/BankAccount_MethodModifiersAndSubclassing.pod',
+    'lib/Moose/Cookbook/Basics/BinaryTree_AttributeFeatures.pod',
+    'lib/Moose/Cookbook/Basics/BinaryTree_BuilderAndLazyBuild.pod',
+    'lib/Moose/Cookbook/Basics/Company_Subtypes.pod',
+    'lib/Moose/Cookbook/Basics/DateTime_ExtendingNonMooseParent.pod',
+    'lib/Moose/Cookbook/Basics/Document_AugmentAndInner.pod',
+    'lib/Moose/Cookbook/Basics/Genome_OverloadingSubtypesAndCoercion.pod',
+    'lib/Moose/Cookbook/Basics/HTTP_SubtypesAndCoercion.pod',
+    'lib/Moose/Cookbook/Basics/Immutable.pod',
+    'lib/Moose/Cookbook/Basics/Person_BUILDARGSAndBUILD.pod',
+    'lib/Moose/Cookbook/Basics/Point_AttributesAndSubclassing.pod',
+    'lib/Moose/Cookbook/Extending/Debugging_BaseClassRole.pod',
+    'lib/Moose/Cookbook/Extending/ExtensionOverview.pod',
+    'lib/Moose/Cookbook/Extending/Mooseish_MooseSugar.pod',
+    'lib/Moose/Cookbook/Legacy/Debugging_BaseClassReplacement.pod',
+    'lib/Moose/Cookbook/Legacy/Labeled_AttributeMetaclass.pod',
+    'lib/Moose/Cookbook/Legacy/Table_ClassMetaclass.pod',
+    'lib/Moose/Cookbook/Meta/GlobRef_InstanceMetaclass.pod',
+    'lib/Moose/Cookbook/Meta/Labeled_AttributeTrait.pod',
+    'lib/Moose/Cookbook/Meta/PrivateOrPublic_MethodMetaclass.pod',
+    'lib/Moose/Cookbook/Meta/Table_MetaclassTrait.pod',
+    'lib/Moose/Cookbook/Meta/WhyMeta.pod',
+    'lib/Moose/Cookbook/Roles/ApplicationToInstance.pod',
+    'lib/Moose/Cookbook/Roles/Comparable_CodeReuse.pod',
+    'lib/Moose/Cookbook/Roles/Restartable_AdvancedComposition.pod',
+    'lib/Moose/Cookbook/Snack/Keywords.pod',
+    'lib/Moose/Cookbook/Snack/Types.pod',
+    'lib/Moose/Cookbook/Style.pod',
+    'lib/Moose/Deprecated.pm',
+    'lib/Moose/Exception.pm',
+    'lib/Moose/Exception/AccessorMustReadWrite.pm',
+    'lib/Moose/Exception/AddParameterizableTypeTakesParameterizableType.pm',
+    'lib/Moose/Exception/AddRoleTakesAMooseMetaRoleInstance.pm',
+    'lib/Moose/Exception/AddRoleToARoleTakesAMooseMetaRole.pm',
+    'lib/Moose/Exception/ApplyTakesABlessedInstance.pm',
+    'lib/Moose/Exception/AttachToClassNeedsAClassMOPClassInstanceOrASubclass.pm',
+    'lib/Moose/Exception/AttributeConflictInRoles.pm',
+    'lib/Moose/Exception/AttributeConflictInSummation.pm',
+    'lib/Moose/Exception/AttributeExtensionIsNotSupportedInRoles.pm',
+    'lib/Moose/Exception/AttributeIsRequired.pm',
+    'lib/Moose/Exception/AttributeMustBeAnClassMOPMixinAttributeCoreOrSubclass.pm',
+    'lib/Moose/Exception/AttributeNamesDoNotMatch.pm',
+    'lib/Moose/Exception/AttributeValueIsNotAnObject.pm',
+    'lib/Moose/Exception/AttributeValueIsNotDefined.pm',
+    'lib/Moose/Exception/AutoDeRefNeedsArrayRefOrHashRef.pm',
+    'lib/Moose/Exception/BadOptionFormat.pm',
+    'lib/Moose/Exception/BothBuilderAndDefaultAreNotAllowed.pm',
+    'lib/Moose/Exception/BuilderDoesNotExist.pm',
+    'lib/Moose/Exception/BuilderMethodNotSupportedForAttribute.pm',
+    'lib/Moose/Exception/BuilderMethodNotSupportedForInlineAttribute.pm',
+    'lib/Moose/Exception/BuilderMustBeAMethodName.pm',
+    'lib/Moose/Exception/CallingMethodOnAnImmutableInstance.pm',
+    'lib/Moose/Exception/CallingReadOnlyMethodOnAnImmutableInstance.pm',
+    'lib/Moose/Exception/CanExtendOnlyClasses.pm',
+    'lib/Moose/Exception/CanOnlyConsumeRole.pm',
+    'lib/Moose/Exception/CanOnlyWrapBlessedCode.pm',
+    'lib/Moose/Exception/CanReblessOnlyIntoASubclass.pm',
+    'lib/Moose/Exception/CanReblessOnlyIntoASuperclass.pm',
+    'lib/Moose/Exception/CannotAddAdditionalTypeCoercionsToUnion.pm',
+    'lib/Moose/Exception/CannotAddAsAnAttributeToARole.pm',
+    'lib/Moose/Exception/CannotApplyBaseClassRolesToRole.pm',
+    'lib/Moose/Exception/CannotAssignValueToReadOnlyAccessor.pm',
+    'lib/Moose/Exception/CannotAugmentIfLocalMethodPresent.pm',
+    'lib/Moose/Exception/CannotAugmentNoSuperMethod.pm',
+    'lib/Moose/Exception/CannotAutoDerefWithoutIsa.pm',
+    'lib/Moose/Exception/CannotAutoDereferenceTypeConstraint.pm',
+    'lib/Moose/Exception/CannotCalculateNativeType.pm',
+    'lib/Moose/Exception/CannotCallAnAbstractBaseMethod.pm',
+    'lib/Moose/Exception/CannotCallAnAbstractMethod.pm',
+    'lib/Moose/Exception/CannotCoerceAWeakRef.pm',
+    'lib/Moose/Exception/CannotCoerceAttributeWhichHasNoCoercion.pm',
+    'lib/Moose/Exception/CannotCreateHigherOrderTypeWithoutATypeParameter.pm',
+    'lib/Moose/Exception/CannotCreateMethodAliasLocalMethodIsPresent.pm',
+    'lib/Moose/Exception/CannotCreateMethodAliasLocalMethodIsPresentInClass.pm',
+    'lib/Moose/Exception/CannotDelegateLocalMethodIsPresent.pm',
+    'lib/Moose/Exception/CannotDelegateWithoutIsa.pm',
+    'lib/Moose/Exception/CannotFindDelegateMetaclass.pm',
+    'lib/Moose/Exception/CannotFindType.pm',
+    'lib/Moose/Exception/CannotFindTypeGivenToMatchOnType.pm',
+    'lib/Moose/Exception/CannotFixMetaclassCompatibility.pm',
+    'lib/Moose/Exception/CannotGenerateInlineConstraint.pm',
+    'lib/Moose/Exception/CannotInitializeMooseMetaRoleComposite.pm',
+    'lib/Moose/Exception/CannotInlineTypeConstraintCheck.pm',
+    'lib/Moose/Exception/CannotLocatePackageInINC.pm',
+    'lib/Moose/Exception/CannotMakeMetaclassCompatible.pm',
+    'lib/Moose/Exception/CannotOverrideALocalMethod.pm',
+    'lib/Moose/Exception/CannotOverrideBodyOfMetaMethods.pm',
+    'lib/Moose/Exception/CannotOverrideLocalMethodIsPresent.pm',
+    'lib/Moose/Exception/CannotOverrideNoSuperMethod.pm',
+    'lib/Moose/Exception/CannotRegisterUnnamedTypeConstraint.pm',
+    'lib/Moose/Exception/CannotUseLazyBuildAndDefaultSimultaneously.pm',
+    'lib/Moose/Exception/CircularReferenceInAlso.pm',
+    'lib/Moose/Exception/ClassDoesNotHaveInitMeta.pm',
+    'lib/Moose/Exception/ClassDoesTheExcludedRole.pm',
+    'lib/Moose/Exception/ClassNamesDoNotMatch.pm',
+    'lib/Moose/Exception/CloneObjectExpectsAnInstanceOfMetaclass.pm',
+    'lib/Moose/Exception/CodeBlockMustBeACodeRef.pm',
+    'lib/Moose/Exception/CoercingWithoutCoercions.pm',
+    'lib/Moose/Exception/CoercionAlreadyExists.pm',
+    'lib/Moose/Exception/CoercionNeedsTypeConstraint.pm',
+    'lib/Moose/Exception/ConflictDetectedInCheckRoleExclusions.pm',
+    'lib/Moose/Exception/ConflictDetectedInCheckRoleExclusionsInToClass.pm',
+    'lib/Moose/Exception/ConstructClassInstanceTakesPackageName.pm',
+    'lib/Moose/Exception/CouldNotCreateMethod.pm',
+    'lib/Moose/Exception/CouldNotCreateWriter.pm',
+    'lib/Moose/Exception/CouldNotEvalConstructor.pm',
+    'lib/Moose/Exception/CouldNotEvalDestructor.pm',
+    'lib/Moose/Exception/CouldNotFindTypeConstraintToCoerceFrom.pm',
+    'lib/Moose/Exception/CouldNotGenerateInlineAttributeMethod.pm',
+    'lib/Moose/Exception/CouldNotLocateTypeConstraintForUnion.pm',
+    'lib/Moose/Exception/CouldNotParseType.pm',
+    'lib/Moose/Exception/CreateMOPClassTakesArrayRefOfAttributes.pm',
+    'lib/Moose/Exception/CreateMOPClassTakesArrayRefOfSuperclasses.pm',
+    'lib/Moose/Exception/CreateMOPClassTakesHashRefOfMethods.pm',
+    'lib/Moose/Exception/CreateTakesArrayRefOfRoles.pm',
+    'lib/Moose/Exception/CreateTakesHashRefOfAttributes.pm',
+    'lib/Moose/Exception/CreateTakesHashRefOfMethods.pm',
+    'lib/Moose/Exception/DefaultToMatchOnTypeMustBeCodeRef.pm',
+    'lib/Moose/Exception/DelegationToAClassWhichIsNotLoaded.pm',
+    'lib/Moose/Exception/DelegationToARoleWhichIsNotLoaded.pm',
+    'lib/Moose/Exception/DelegationToATypeWhichIsNotAClass.pm',
+    'lib/Moose/Exception/DoesRequiresRoleName.pm',
+    'lib/Moose/Exception/EnumCalledWithAnArrayRefAndAdditionalArgs.pm',
+    'lib/Moose/Exception/EnumValuesMustBeString.pm',
+    'lib/Moose/Exception/ExtendsMissingArgs.pm',
+    'lib/Moose/Exception/HandlesMustBeAHashRef.pm',
+    'lib/Moose/Exception/IllegalInheritedOptions.pm',
+    'lib/Moose/Exception/IllegalMethodTypeToAddMethodModifier.pm',
+    'lib/Moose/Exception/IncompatibleMetaclassOfSuperclass.pm',
+    'lib/Moose/Exception/InitMetaRequiresClass.pm',
+    'lib/Moose/Exception/InitializeTakesUnBlessedPackageName.pm',
+    'lib/Moose/Exception/InstanceBlessedIntoWrongClass.pm',
+    'lib/Moose/Exception/InstanceMustBeABlessedReference.pm',
+    'lib/Moose/Exception/InvalidArgPassedToMooseUtilMetaRole.pm',
+    'lib/Moose/Exception/InvalidArgumentToMethod.pm',
+    'lib/Moose/Exception/InvalidArgumentsToTraitAliases.pm',
+    'lib/Moose/Exception/InvalidBaseTypeGivenToCreateParameterizedTypeConstraint.pm',
+    'lib/Moose/Exception/InvalidHandleValue.pm',
+    'lib/Moose/Exception/InvalidHasProvidedInARole.pm',
+    'lib/Moose/Exception/InvalidNameForType.pm',
+    'lib/Moose/Exception/InvalidRoleApplication.pm',
+    'lib/Moose/Exception/InvalidTypeConstraint.pm',
+    'lib/Moose/Exception/InvalidTypeGivenToCreateParameterizedTypeConstraint.pm',
+    'lib/Moose/Exception/InvalidValueForIs.pm',
+    'lib/Moose/Exception/IsaDoesNotDoTheRole.pm',
+    'lib/Moose/Exception/IsaLacksDoesMethod.pm',
+    'lib/Moose/Exception/LazyAttributeNeedsADefault.pm',
+    'lib/Moose/Exception/Legacy.pm',
+    'lib/Moose/Exception/MOPAttributeNewNeedsAttributeName.pm',
+    'lib/Moose/Exception/MatchActionMustBeACodeRef.pm',
+    'lib/Moose/Exception/MessageParameterMustBeCodeRef.pm',
+    'lib/Moose/Exception/MetaclassIsAClassNotASubclassOfGivenMetaclass.pm',
+    'lib/Moose/Exception/MetaclassIsARoleNotASubclassOfGivenMetaclass.pm',
+    'lib/Moose/Exception/MetaclassIsNotASubclassOfGivenMetaclass.pm',
+    'lib/Moose/Exception/MetaclassMustBeASubclassOfMooseMetaClass.pm',
+    'lib/Moose/Exception/MetaclassMustBeASubclassOfMooseMetaRole.pm',
+    'lib/Moose/Exception/MetaclassMustBeDerivedFromClassMOPClass.pm',
+    'lib/Moose/Exception/MetaclassNotLoaded.pm',
+    'lib/Moose/Exception/MetaclassTypeIncompatible.pm',
+    'lib/Moose/Exception/MethodExpectedAMetaclassObject.pm',
+    'lib/Moose/Exception/MethodExpectsFewerArgs.pm',
+    'lib/Moose/Exception/MethodExpectsMoreArgs.pm',
+    'lib/Moose/Exception/MethodModifierNeedsMethodName.pm',
+    'lib/Moose/Exception/MethodNameConflictInRoles.pm',
+    'lib/Moose/Exception/MethodNameNotFoundInInheritanceHierarchy.pm',
+    'lib/Moose/Exception/MethodNameNotGiven.pm',
+    'lib/Moose/Exception/MustDefineAMethodName.pm',
+    'lib/Moose/Exception/MustDefineAnAttributeName.pm',
+    'lib/Moose/Exception/MustHaveAtLeastOneValueToEnumerate.pm',
+    'lib/Moose/Exception/MustPassAHashOfOptions.pm',
+    'lib/Moose/Exception/MustPassAMooseMetaRoleInstanceOrSubclass.pm',
+    'lib/Moose/Exception/MustPassAPackageNameOrAnExistingClassMOPPackageInstance.pm',
+    'lib/Moose/Exception/MustPassEvenNumberOfArguments.pm',
+    'lib/Moose/Exception/MustPassEvenNumberOfAttributeOptions.pm',
+    'lib/Moose/Exception/MustProvideANameForTheAttribute.pm',
+    'lib/Moose/Exception/MustSpecifyAtleastOneMethod.pm',
+    'lib/Moose/Exception/MustSpecifyAtleastOneRole.pm',
+    'lib/Moose/Exception/MustSpecifyAtleastOneRoleToApplicant.pm',
+    'lib/Moose/Exception/MustSupplyAClassMOPAttributeInstance.pm',
+    'lib/Moose/Exception/MustSupplyADelegateToMethod.pm',
+    'lib/Moose/Exception/MustSupplyAMetaclass.pm',
+    'lib/Moose/Exception/MustSupplyAMooseMetaAttributeInstance.pm',
+    'lib/Moose/Exception/MustSupplyAnAccessorTypeToConstructWith.pm',
+    'lib/Moose/Exception/MustSupplyAnAttributeToConstructWith.pm',
+    'lib/Moose/Exception/MustSupplyArrayRefAsCurriedArguments.pm',
+    'lib/Moose/Exception/MustSupplyPackageNameAndName.pm',
+    'lib/Moose/Exception/NeedsTypeConstraintUnionForTypeCoercionUnion.pm',
+    'lib/Moose/Exception/NeitherAttributeNorAttributeNameIsGiven.pm',
+    'lib/Moose/Exception/NeitherClassNorClassNameIsGiven.pm',
+    'lib/Moose/Exception/NeitherRoleNorRoleNameIsGiven.pm',
+    'lib/Moose/Exception/NeitherTypeNorTypeNameIsGiven.pm',
+    'lib/Moose/Exception/NoAttributeFoundInSuperClass.pm',
+    'lib/Moose/Exception/NoBodyToInitializeInAnAbstractBaseClass.pm',
+    'lib/Moose/Exception/NoCasesMatched.pm',
+    'lib/Moose/Exception/NoConstraintCheckForTypeConstraint.pm',
+    'lib/Moose/Exception/NoDestructorClassSpecified.pm',
+    'lib/Moose/Exception/NoImmutableTraitSpecifiedForClass.pm',
+    'lib/Moose/Exception/NoParentGivenToSubtype.pm',
+    'lib/Moose/Exception/OnlyInstancesCanBeCloned.pm',
+    'lib/Moose/Exception/OperatorIsRequired.pm',
+    'lib/Moose/Exception/OverrideConflictInComposition.pm',
+    'lib/Moose/Exception/OverrideConflictInSummation.pm',
+    'lib/Moose/Exception/PackageDoesNotUseMooseExporter.pm',
+    'lib/Moose/Exception/PackageNameAndNameParamsNotGivenToWrap.pm',
+    'lib/Moose/Exception/PackagesAndModulesAreNotCachable.pm',
+    'lib/Moose/Exception/ParameterIsNotSubtypeOfParent.pm',
+    'lib/Moose/Exception/ReferencesAreNotAllowedAsDefault.pm',
+    'lib/Moose/Exception/RequiredAttributeLacksInitialization.pm',
+    'lib/Moose/Exception/RequiredAttributeNeedsADefault.pm',
+    'lib/Moose/Exception/RequiredMethodsImportedByClass.pm',
+    'lib/Moose/Exception/RequiredMethodsNotImplementedByClass.pm',
+    'lib/Moose/Exception/Role/Attribute.pm',
+    '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',
+    'lib/Moose/Exception/Role/Role.pm',
+    'lib/Moose/Exception/Role/RoleForCreate.pm',
+    'lib/Moose/Exception/Role/RoleForCreateMOPClass.pm',
+    'lib/Moose/Exception/Role/TypeConstraint.pm',
+    'lib/Moose/Exception/RoleDoesTheExcludedRole.pm',
+    'lib/Moose/Exception/RoleExclusionConflict.pm',
+    'lib/Moose/Exception/RoleNameRequired.pm',
+    'lib/Moose/Exception/RoleNameRequiredForMooseMetaRole.pm',
+    'lib/Moose/Exception/RolesDoNotSupportAugment.pm',
+    'lib/Moose/Exception/RolesDoNotSupportExtends.pm',
+    'lib/Moose/Exception/RolesDoNotSupportInner.pm',
+    'lib/Moose/Exception/RolesDoNotSupportRegexReferencesForMethodModifiers.pm',
+    'lib/Moose/Exception/RolesInCreateTakesAnArrayRef.pm',
+    'lib/Moose/Exception/RolesListMustBeInstancesOfMooseMetaRole.pm',
+    'lib/Moose/Exception/SingleParamsToNewMustBeHashRef.pm',
+    'lib/Moose/Exception/TriggerMustBeACodeRef.pm',
+    'lib/Moose/Exception/TypeConstraintCannotBeUsedForAParameterizableType.pm',
+    'lib/Moose/Exception/TypeConstraintIsAlreadyCreated.pm',
+    'lib/Moose/Exception/TypeParameterMustBeMooseMetaType.pm',
+    'lib/Moose/Exception/UnableToCanonicalizeHandles.pm',
+    'lib/Moose/Exception/UnableToCanonicalizeNonRolePackage.pm',
+    'lib/Moose/Exception/UnableToRecognizeDelegateMetaclass.pm',
+    'lib/Moose/Exception/UndefinedHashKeysPassedToMethod.pm',
+    'lib/Moose/Exception/UnionCalledWithAnArrayRefAndAdditionalArgs.pm',
+    'lib/Moose/Exception/UnionTakesAtleastTwoTypeNames.pm',
+    'lib/Moose/Exception/ValidationFailedForInlineTypeConstraint.pm',
+    'lib/Moose/Exception/ValidationFailedForTypeConstraint.pm',
+    'lib/Moose/Exception/WrapTakesACodeRefToBless.pm',
+    'lib/Moose/Exception/WrongTypeConstraintGiven.pm',
+    'lib/Moose/Exporter.pm',
+    'lib/Moose/Intro.pod',
+    'lib/Moose/Manual.pod',
+    'lib/Moose/Manual/Attributes.pod',
+    'lib/Moose/Manual/BestPractices.pod',
+    'lib/Moose/Manual/Classes.pod',
+    'lib/Moose/Manual/Concepts.pod',
+    'lib/Moose/Manual/Construction.pod',
+    'lib/Moose/Manual/Contributing.pod',
+    'lib/Moose/Manual/Delegation.pod',
+    'lib/Moose/Manual/Delta.pod',
+    'lib/Moose/Manual/Exceptions.pod',
+    'lib/Moose/Manual/Exceptions/Manifest.pod',
+    'lib/Moose/Manual/FAQ.pod',
+    'lib/Moose/Manual/MOP.pod',
+    'lib/Moose/Manual/MethodModifiers.pod',
+    'lib/Moose/Manual/MooseX.pod',
+    'lib/Moose/Manual/Roles.pod',
+    'lib/Moose/Manual/Support.pod',
+    'lib/Moose/Manual/Types.pod',
+    'lib/Moose/Manual/Unsweetened.pod',
+    'lib/Moose/Meta/Attribute.pm',
+    'lib/Moose/Meta/Attribute/Native.pm',
+    'lib/Moose/Meta/Attribute/Native/Trait.pm',
+    'lib/Moose/Meta/Attribute/Native/Trait/Array.pm',
+    'lib/Moose/Meta/Attribute/Native/Trait/Bool.pm',
+    'lib/Moose/Meta/Attribute/Native/Trait/Code.pm',
+    'lib/Moose/Meta/Attribute/Native/Trait/Counter.pm',
+    'lib/Moose/Meta/Attribute/Native/Trait/Hash.pm',
+    'lib/Moose/Meta/Attribute/Native/Trait/Number.pm',
+    'lib/Moose/Meta/Attribute/Native/Trait/String.pm',
+    'lib/Moose/Meta/Class.pm',
+    'lib/Moose/Meta/Class/Immutable/Trait.pm',
+    'lib/Moose/Meta/Instance.pm',
+    'lib/Moose/Meta/Method.pm',
+    'lib/Moose/Meta/Method/Accessor.pm',
+    'lib/Moose/Meta/Method/Accessor/Native.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Array.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Array/Writer.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Array/accessor.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Array/clear.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Array/count.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Array/delete.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Array/elements.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Array/first.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Array/first_index.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Array/get.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Array/grep.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Array/insert.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Array/is_empty.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Array/join.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Array/map.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Array/natatime.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Array/pop.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Array/push.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Array/reduce.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Array/set.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Array/shallow_clone.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Array/shift.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Array/shuffle.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Array/sort.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Array/sort_in_place.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Array/splice.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Array/uniq.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Array/unshift.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Bool/not.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Bool/set.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Bool/toggle.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Bool/unset.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Code/execute.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Code/execute_method.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Collection.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Counter/Writer.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Counter/dec.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Counter/inc.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Counter/reset.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Counter/set.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Hash.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Hash/Writer.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Hash/accessor.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Hash/clear.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Hash/count.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Hash/defined.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Hash/delete.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Hash/elements.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Hash/exists.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Hash/get.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Hash/is_empty.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Hash/keys.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Hash/kv.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Hash/set.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Hash/shallow_clone.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Hash/values.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Number/abs.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Number/add.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Number/div.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Number/mod.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Number/mul.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Number/set.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Number/sub.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Reader.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/String/append.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/String/chomp.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/String/chop.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/String/clear.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/String/inc.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/String/length.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/String/match.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/String/prepend.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/String/replace.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/String/substr.pm',
+    'lib/Moose/Meta/Method/Accessor/Native/Writer.pm',
+    'lib/Moose/Meta/Method/Augmented.pm',
+    'lib/Moose/Meta/Method/Constructor.pm',
+    'lib/Moose/Meta/Method/Delegation.pm',
+    'lib/Moose/Meta/Method/Destructor.pm',
+    'lib/Moose/Meta/Method/Meta.pm',
+    'lib/Moose/Meta/Method/Overridden.pm',
+    'lib/Moose/Meta/Mixin/AttributeCore.pm',
+    'lib/Moose/Meta/Object/Trait.pm',
+    'lib/Moose/Meta/Role.pm',
+    'lib/Moose/Meta/Role/Application.pm',
+    'lib/Moose/Meta/Role/Application/RoleSummation.pm',
+    'lib/Moose/Meta/Role/Application/ToClass.pm',
+    'lib/Moose/Meta/Role/Application/ToInstance.pm',
+    'lib/Moose/Meta/Role/Application/ToRole.pm',
+    'lib/Moose/Meta/Role/Attribute.pm',
+    'lib/Moose/Meta/Role/Composite.pm',
+    'lib/Moose/Meta/Role/Method.pm',
+    'lib/Moose/Meta/Role/Method/Conflicting.pm',
+    'lib/Moose/Meta/Role/Method/Required.pm',
+    'lib/Moose/Meta/TypeCoercion.pm',
+    'lib/Moose/Meta/TypeCoercion/Union.pm',
+    'lib/Moose/Meta/TypeConstraint.pm',
+    'lib/Moose/Meta/TypeConstraint/Class.pm',
+    'lib/Moose/Meta/TypeConstraint/DuckType.pm',
+    'lib/Moose/Meta/TypeConstraint/Enum.pm',
+    'lib/Moose/Meta/TypeConstraint/Parameterizable.pm',
+    'lib/Moose/Meta/TypeConstraint/Parameterized.pm',
+    'lib/Moose/Meta/TypeConstraint/Registry.pm',
+    'lib/Moose/Meta/TypeConstraint/Role.pm',
+    'lib/Moose/Meta/TypeConstraint/Union.pm',
+    'lib/Moose/Object.pm',
+    'lib/Moose/Role.pm',
+    'lib/Moose/Spec/Role.pod',
+    'lib/Moose/Unsweetened.pod',
+    'lib/Moose/Util.pm',
+    'lib/Moose/Util/MetaRole.pm',
+    'lib/Moose/Util/TypeConstraints.pm',
+    'lib/Moose/Util/TypeConstraints/Builtins.pm',
+    'lib/Test/Moose.pm',
+    'lib/metaclass.pm',
+    'lib/oose.pm',
+    't/00-report-prereqs.dd',
+    '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/frame-leak.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/exporter_sub_names.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;
+done_testing;
@@ -0,0 +1,432 @@
+use 5.006;
+use strict;
+use warnings;
+
+# this test was generated with Dist::Zilla::Plugin::Test::Compile 2.046
+
+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') or diag 'got warnings: ', explain \@warnings if $ENV{AUTHOR_TESTING};
+
+BAIL_OUT("Compilation problems") if !Test::More->builder->is_passing;
@@ -2,6 +2,11 @@ use strict;
 use warnings;
 
 use Test::More;
+BEGIN {
+    plan skip_all => 'this test requires a built dist'
+        unless -f 'MANIFEST' && -f 'META.json';
+}
+
 use Moose ();
 
 # this is used in Moo::sification
@@ -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,9 @@
-# this test was generated with Dist::Zilla::Plugin::Test::Kwalitee 2.07
+# this test was generated with Dist::Zilla::Plugin::Test::Kwalitee 2.11
 use strict;
 use warnings;
-use Test::Kwalitee;
+use Test::More 0.88;
+use Test::Kwalitee 1.21 'kwalitee_ok';
+
+kwalitee_ok( qw( -use_strict ) );
+
+done_testing;
@@ -1,442 +0,0 @@
-use strict;
-use warnings;
-
-# this test was generated with Dist::Zilla::Plugin::Test::NoTabs 0.06
-
-use Test::More 0.88;
-use Test::NoTabs;
-
-my @files = (
-    'bin/moose-outdated',
-    'lib/Class/MOP.pm',
-    'lib/Class/MOP/Attribute.pm',
-    'lib/Class/MOP/Class.pm',
-    'lib/Class/MOP/Class/Immutable/Trait.pm',
-    'lib/Class/MOP/Deprecated.pm',
-    'lib/Class/MOP/Instance.pm',
-    'lib/Class/MOP/Method.pm',
-    'lib/Class/MOP/Method/Accessor.pm',
-    'lib/Class/MOP/Method/Constructor.pm',
-    'lib/Class/MOP/Method/Generated.pm',
-    'lib/Class/MOP/Method/Inlined.pm',
-    'lib/Class/MOP/Method/Meta.pm',
-    'lib/Class/MOP/Method/Overload.pm',
-    'lib/Class/MOP/Method/Wrapped.pm',
-    'lib/Class/MOP/MiniTrait.pm',
-    'lib/Class/MOP/Mixin.pm',
-    'lib/Class/MOP/Mixin/AttributeCore.pm',
-    'lib/Class/MOP/Mixin/HasAttributes.pm',
-    'lib/Class/MOP/Mixin/HasMethods.pm',
-    'lib/Class/MOP/Module.pm',
-    'lib/Class/MOP/Object.pm',
-    'lib/Class/MOP/Package.pm',
-    'lib/Moose.pm',
-    'lib/Moose/Conflicts.pm',
-    'lib/Moose/Cookbook.pod',
-    'lib/Moose/Cookbook/Basics/BankAccount_MethodModifiersAndSubclassing.pod',
-    'lib/Moose/Cookbook/Basics/BinaryTree_AttributeFeatures.pod',
-    'lib/Moose/Cookbook/Basics/BinaryTree_BuilderAndLazyBuild.pod',
-    'lib/Moose/Cookbook/Basics/Company_Subtypes.pod',
-    'lib/Moose/Cookbook/Basics/DateTime_ExtendingNonMooseParent.pod',
-    'lib/Moose/Cookbook/Basics/Document_AugmentAndInner.pod',
-    'lib/Moose/Cookbook/Basics/Genome_OverloadingSubtypesAndCoercion.pod',
-    'lib/Moose/Cookbook/Basics/HTTP_SubtypesAndCoercion.pod',
-    'lib/Moose/Cookbook/Basics/Immutable.pod',
-    'lib/Moose/Cookbook/Basics/Person_BUILDARGSAndBUILD.pod',
-    'lib/Moose/Cookbook/Basics/Point_AttributesAndSubclassing.pod',
-    'lib/Moose/Cookbook/Extending/Debugging_BaseClassRole.pod',
-    'lib/Moose/Cookbook/Extending/ExtensionOverview.pod',
-    'lib/Moose/Cookbook/Extending/Mooseish_MooseSugar.pod',
-    'lib/Moose/Cookbook/Legacy/Debugging_BaseClassReplacement.pod',
-    'lib/Moose/Cookbook/Legacy/Labeled_AttributeMetaclass.pod',
-    'lib/Moose/Cookbook/Legacy/Table_ClassMetaclass.pod',
-    'lib/Moose/Cookbook/Meta/GlobRef_InstanceMetaclass.pod',
-    'lib/Moose/Cookbook/Meta/Labeled_AttributeTrait.pod',
-    'lib/Moose/Cookbook/Meta/PrivateOrPublic_MethodMetaclass.pod',
-    'lib/Moose/Cookbook/Meta/Table_MetaclassTrait.pod',
-    'lib/Moose/Cookbook/Meta/WhyMeta.pod',
-    'lib/Moose/Cookbook/Roles/ApplicationToInstance.pod',
-    'lib/Moose/Cookbook/Roles/Comparable_CodeReuse.pod',
-    'lib/Moose/Cookbook/Roles/Restartable_AdvancedComposition.pod',
-    'lib/Moose/Cookbook/Snack/Keywords.pod',
-    'lib/Moose/Cookbook/Snack/Types.pod',
-    'lib/Moose/Cookbook/Style.pod',
-    'lib/Moose/Deprecated.pm',
-    'lib/Moose/Exception.pm',
-    'lib/Moose/Exception/AccessorMustReadWrite.pm',
-    'lib/Moose/Exception/AddParameterizableTypeTakesParameterizableType.pm',
-    'lib/Moose/Exception/AddRoleTakesAMooseMetaRoleInstance.pm',
-    'lib/Moose/Exception/AddRoleToARoleTakesAMooseMetaRole.pm',
-    'lib/Moose/Exception/ApplyTakesABlessedInstance.pm',
-    'lib/Moose/Exception/AttachToClassNeedsAClassMOPClassInstanceOrASubclass.pm',
-    'lib/Moose/Exception/AttributeConflictInRoles.pm',
-    'lib/Moose/Exception/AttributeConflictInSummation.pm',
-    'lib/Moose/Exception/AttributeExtensionIsNotSupportedInRoles.pm',
-    'lib/Moose/Exception/AttributeIsRequired.pm',
-    'lib/Moose/Exception/AttributeMustBeAnClassMOPMixinAttributeCoreOrSubclass.pm',
-    'lib/Moose/Exception/AttributeNamesDoNotMatch.pm',
-    'lib/Moose/Exception/AttributeValueIsNotAnObject.pm',
-    'lib/Moose/Exception/AttributeValueIsNotDefined.pm',
-    'lib/Moose/Exception/AutoDeRefNeedsArrayRefOrHashRef.pm',
-    'lib/Moose/Exception/BadOptionFormat.pm',
-    'lib/Moose/Exception/BothBuilderAndDefaultAreNotAllowed.pm',
-    'lib/Moose/Exception/BuilderDoesNotExist.pm',
-    'lib/Moose/Exception/BuilderMethodNotSupportedForAttribute.pm',
-    'lib/Moose/Exception/BuilderMethodNotSupportedForInlineAttribute.pm',
-    'lib/Moose/Exception/BuilderMustBeAMethodName.pm',
-    'lib/Moose/Exception/CallingMethodOnAnImmutableInstance.pm',
-    'lib/Moose/Exception/CallingReadOnlyMethodOnAnImmutableInstance.pm',
-    'lib/Moose/Exception/CanExtendOnlyClasses.pm',
-    'lib/Moose/Exception/CanOnlyConsumeRole.pm',
-    'lib/Moose/Exception/CanOnlyWrapBlessedCode.pm',
-    'lib/Moose/Exception/CanReblessOnlyIntoASubclass.pm',
-    'lib/Moose/Exception/CanReblessOnlyIntoASuperclass.pm',
-    'lib/Moose/Exception/CannotAddAdditionalTypeCoercionsToUnion.pm',
-    'lib/Moose/Exception/CannotAddAsAnAttributeToARole.pm',
-    'lib/Moose/Exception/CannotApplyBaseClassRolesToRole.pm',
-    'lib/Moose/Exception/CannotAssignValueToReadOnlyAccessor.pm',
-    'lib/Moose/Exception/CannotAugmentIfLocalMethodPresent.pm',
-    'lib/Moose/Exception/CannotAugmentNoSuperMethod.pm',
-    'lib/Moose/Exception/CannotAutoDerefWithoutIsa.pm',
-    'lib/Moose/Exception/CannotAutoDereferenceTypeConstraint.pm',
-    'lib/Moose/Exception/CannotCalculateNativeType.pm',
-    'lib/Moose/Exception/CannotCallAnAbstractBaseMethod.pm',
-    'lib/Moose/Exception/CannotCallAnAbstractMethod.pm',
-    'lib/Moose/Exception/CannotCoerceAWeakRef.pm',
-    'lib/Moose/Exception/CannotCoerceAttributeWhichHasNoCoercion.pm',
-    'lib/Moose/Exception/CannotCreateHigherOrderTypeWithoutATypeParameter.pm',
-    'lib/Moose/Exception/CannotCreateMethodAliasLocalMethodIsPresent.pm',
-    'lib/Moose/Exception/CannotCreateMethodAliasLocalMethodIsPresentInClass.pm',
-    'lib/Moose/Exception/CannotDelegateLocalMethodIsPresent.pm',
-    'lib/Moose/Exception/CannotDelegateWithoutIsa.pm',
-    'lib/Moose/Exception/CannotFindDelegateMetaclass.pm',
-    'lib/Moose/Exception/CannotFindType.pm',
-    'lib/Moose/Exception/CannotFindTypeGivenToMatchOnType.pm',
-    'lib/Moose/Exception/CannotFixMetaclassCompatibility.pm',
-    'lib/Moose/Exception/CannotGenerateInlineConstraint.pm',
-    'lib/Moose/Exception/CannotInitializeMooseMetaRoleComposite.pm',
-    'lib/Moose/Exception/CannotInlineTypeConstraintCheck.pm',
-    'lib/Moose/Exception/CannotLocatePackageInINC.pm',
-    'lib/Moose/Exception/CannotMakeMetaclassCompatible.pm',
-    'lib/Moose/Exception/CannotOverrideALocalMethod.pm',
-    'lib/Moose/Exception/CannotOverrideBodyOfMetaMethods.pm',
-    'lib/Moose/Exception/CannotOverrideLocalMethodIsPresent.pm',
-    'lib/Moose/Exception/CannotOverrideNoSuperMethod.pm',
-    'lib/Moose/Exception/CannotRegisterUnnamedTypeConstraint.pm',
-    'lib/Moose/Exception/CannotUseLazyBuildAndDefaultSimultaneously.pm',
-    'lib/Moose/Exception/CircularReferenceInAlso.pm',
-    'lib/Moose/Exception/ClassDoesNotHaveInitMeta.pm',
-    'lib/Moose/Exception/ClassDoesTheExcludedRole.pm',
-    'lib/Moose/Exception/ClassNamesDoNotMatch.pm',
-    'lib/Moose/Exception/CloneObjectExpectsAnInstanceOfMetaclass.pm',
-    'lib/Moose/Exception/CodeBlockMustBeACodeRef.pm',
-    'lib/Moose/Exception/CoercingWithoutCoercions.pm',
-    'lib/Moose/Exception/CoercionAlreadyExists.pm',
-    'lib/Moose/Exception/CoercionNeedsTypeConstraint.pm',
-    'lib/Moose/Exception/ConflictDetectedInCheckRoleExclusions.pm',
-    'lib/Moose/Exception/ConflictDetectedInCheckRoleExclusionsInToClass.pm',
-    'lib/Moose/Exception/ConstructClassInstanceTakesPackageName.pm',
-    'lib/Moose/Exception/CouldNotCreateMethod.pm',
-    'lib/Moose/Exception/CouldNotCreateWriter.pm',
-    'lib/Moose/Exception/CouldNotEvalConstructor.pm',
-    'lib/Moose/Exception/CouldNotEvalDestructor.pm',
-    'lib/Moose/Exception/CouldNotFindTypeConstraintToCoerceFrom.pm',
-    'lib/Moose/Exception/CouldNotGenerateInlineAttributeMethod.pm',
-    'lib/Moose/Exception/CouldNotLocateTypeConstraintForUnion.pm',
-    'lib/Moose/Exception/CouldNotParseType.pm',
-    'lib/Moose/Exception/CreateMOPClassTakesArrayRefOfAttributes.pm',
-    'lib/Moose/Exception/CreateMOPClassTakesArrayRefOfSuperclasses.pm',
-    'lib/Moose/Exception/CreateMOPClassTakesHashRefOfMethods.pm',
-    'lib/Moose/Exception/CreateTakesArrayRefOfRoles.pm',
-    'lib/Moose/Exception/CreateTakesHashRefOfAttributes.pm',
-    'lib/Moose/Exception/CreateTakesHashRefOfMethods.pm',
-    'lib/Moose/Exception/DefaultToMatchOnTypeMustBeCodeRef.pm',
-    'lib/Moose/Exception/DelegationToAClassWhichIsNotLoaded.pm',
-    'lib/Moose/Exception/DelegationToARoleWhichIsNotLoaded.pm',
-    'lib/Moose/Exception/DelegationToATypeWhichIsNotAClass.pm',
-    'lib/Moose/Exception/DoesRequiresRoleName.pm',
-    'lib/Moose/Exception/EnumCalledWithAnArrayRefAndAdditionalArgs.pm',
-    'lib/Moose/Exception/EnumValuesMustBeString.pm',
-    'lib/Moose/Exception/ExtendsMissingArgs.pm',
-    'lib/Moose/Exception/HandlesMustBeAHashRef.pm',
-    'lib/Moose/Exception/IllegalInheritedOptions.pm',
-    'lib/Moose/Exception/IllegalMethodTypeToAddMethodModifier.pm',
-    'lib/Moose/Exception/IncompatibleMetaclassOfSuperclass.pm',
-    'lib/Moose/Exception/InitMetaRequiresClass.pm',
-    'lib/Moose/Exception/InitializeTakesUnBlessedPackageName.pm',
-    'lib/Moose/Exception/InstanceBlessedIntoWrongClass.pm',
-    'lib/Moose/Exception/InstanceMustBeABlessedReference.pm',
-    'lib/Moose/Exception/InvalidArgPassedToMooseUtilMetaRole.pm',
-    'lib/Moose/Exception/InvalidArgumentToMethod.pm',
-    'lib/Moose/Exception/InvalidArgumentsToTraitAliases.pm',
-    'lib/Moose/Exception/InvalidBaseTypeGivenToCreateParameterizedTypeConstraint.pm',
-    'lib/Moose/Exception/InvalidHandleValue.pm',
-    'lib/Moose/Exception/InvalidHasProvidedInARole.pm',
-    'lib/Moose/Exception/InvalidNameForType.pm',
-    'lib/Moose/Exception/InvalidRoleApplication.pm',
-    'lib/Moose/Exception/InvalidTypeConstraint.pm',
-    'lib/Moose/Exception/InvalidTypeGivenToCreateParameterizedTypeConstraint.pm',
-    'lib/Moose/Exception/InvalidValueForIs.pm',
-    'lib/Moose/Exception/IsaDoesNotDoTheRole.pm',
-    'lib/Moose/Exception/IsaLacksDoesMethod.pm',
-    'lib/Moose/Exception/LazyAttributeNeedsADefault.pm',
-    'lib/Moose/Exception/Legacy.pm',
-    'lib/Moose/Exception/MOPAttributeNewNeedsAttributeName.pm',
-    'lib/Moose/Exception/MatchActionMustBeACodeRef.pm',
-    'lib/Moose/Exception/MessageParameterMustBeCodeRef.pm',
-    'lib/Moose/Exception/MetaclassIsAClassNotASubclassOfGivenMetaclass.pm',
-    'lib/Moose/Exception/MetaclassIsARoleNotASubclassOfGivenMetaclass.pm',
-    'lib/Moose/Exception/MetaclassIsNotASubclassOfGivenMetaclass.pm',
-    'lib/Moose/Exception/MetaclassMustBeASubclassOfMooseMetaClass.pm',
-    'lib/Moose/Exception/MetaclassMustBeASubclassOfMooseMetaRole.pm',
-    'lib/Moose/Exception/MetaclassMustBeDerivedFromClassMOPClass.pm',
-    'lib/Moose/Exception/MetaclassNotLoaded.pm',
-    'lib/Moose/Exception/MetaclassTypeIncompatible.pm',
-    'lib/Moose/Exception/MethodExpectedAMetaclassObject.pm',
-    'lib/Moose/Exception/MethodExpectsFewerArgs.pm',
-    'lib/Moose/Exception/MethodExpectsMoreArgs.pm',
-    'lib/Moose/Exception/MethodModifierNeedsMethodName.pm',
-    'lib/Moose/Exception/MethodNameConflictInRoles.pm',
-    'lib/Moose/Exception/MethodNameNotFoundInInheritanceHierarchy.pm',
-    'lib/Moose/Exception/MethodNameNotGiven.pm',
-    'lib/Moose/Exception/MustDefineAMethodName.pm',
-    'lib/Moose/Exception/MustDefineAnAttributeName.pm',
-    'lib/Moose/Exception/MustHaveAtLeastOneValueToEnumerate.pm',
-    'lib/Moose/Exception/MustPassAHashOfOptions.pm',
-    'lib/Moose/Exception/MustPassAMooseMetaRoleInstanceOrSubclass.pm',
-    'lib/Moose/Exception/MustPassAPackageNameOrAnExistingClassMOPPackageInstance.pm',
-    'lib/Moose/Exception/MustPassEvenNumberOfArguments.pm',
-    'lib/Moose/Exception/MustPassEvenNumberOfAttributeOptions.pm',
-    'lib/Moose/Exception/MustProvideANameForTheAttribute.pm',
-    'lib/Moose/Exception/MustSpecifyAtleastOneMethod.pm',
-    'lib/Moose/Exception/MustSpecifyAtleastOneRole.pm',
-    'lib/Moose/Exception/MustSpecifyAtleastOneRoleToApplicant.pm',
-    'lib/Moose/Exception/MustSupplyAClassMOPAttributeInstance.pm',
-    'lib/Moose/Exception/MustSupplyADelegateToMethod.pm',
-    'lib/Moose/Exception/MustSupplyAMetaclass.pm',
-    'lib/Moose/Exception/MustSupplyAMooseMetaAttributeInstance.pm',
-    'lib/Moose/Exception/MustSupplyAnAccessorTypeToConstructWith.pm',
-    'lib/Moose/Exception/MustSupplyAnAttributeToConstructWith.pm',
-    'lib/Moose/Exception/MustSupplyArrayRefAsCurriedArguments.pm',
-    'lib/Moose/Exception/MustSupplyPackageNameAndName.pm',
-    'lib/Moose/Exception/NeedsTypeConstraintUnionForTypeCoercionUnion.pm',
-    'lib/Moose/Exception/NeitherAttributeNorAttributeNameIsGiven.pm',
-    'lib/Moose/Exception/NeitherClassNorClassNameIsGiven.pm',
-    'lib/Moose/Exception/NeitherRoleNorRoleNameIsGiven.pm',
-    'lib/Moose/Exception/NeitherTypeNorTypeNameIsGiven.pm',
-    'lib/Moose/Exception/NoAttributeFoundInSuperClass.pm',
-    'lib/Moose/Exception/NoBodyToInitializeInAnAbstractBaseClass.pm',
-    'lib/Moose/Exception/NoCasesMatched.pm',
-    'lib/Moose/Exception/NoConstraintCheckForTypeConstraint.pm',
-    'lib/Moose/Exception/NoDestructorClassSpecified.pm',
-    'lib/Moose/Exception/NoImmutableTraitSpecifiedForClass.pm',
-    'lib/Moose/Exception/NoParentGivenToSubtype.pm',
-    'lib/Moose/Exception/OnlyInstancesCanBeCloned.pm',
-    'lib/Moose/Exception/OperatorIsRequired.pm',
-    'lib/Moose/Exception/OverrideConflictInComposition.pm',
-    'lib/Moose/Exception/OverrideConflictInSummation.pm',
-    'lib/Moose/Exception/PackageDoesNotUseMooseExporter.pm',
-    'lib/Moose/Exception/PackageNameAndNameParamsNotGivenToWrap.pm',
-    'lib/Moose/Exception/PackagesAndModulesAreNotCachable.pm',
-    'lib/Moose/Exception/ParameterIsNotSubtypeOfParent.pm',
-    'lib/Moose/Exception/ReferencesAreNotAllowedAsDefault.pm',
-    'lib/Moose/Exception/RequiredAttributeLacksInitialization.pm',
-    'lib/Moose/Exception/RequiredAttributeNeedsADefault.pm',
-    'lib/Moose/Exception/RequiredMethodsImportedByClass.pm',
-    'lib/Moose/Exception/RequiredMethodsNotImplementedByClass.pm',
-    'lib/Moose/Exception/Role/Attribute.pm',
-    '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/InvalidAttributeOptions.pm',
-    'lib/Moose/Exception/Role/Method.pm',
-    'lib/Moose/Exception/Role/ParamsHash.pm',
-    'lib/Moose/Exception/Role/Role.pm',
-    'lib/Moose/Exception/Role/RoleForCreate.pm',
-    'lib/Moose/Exception/Role/RoleForCreateMOPClass.pm',
-    'lib/Moose/Exception/Role/TypeConstraint.pm',
-    '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',
-    'lib/Moose/Exception/RolesDoNotSupportRegexReferencesForMethodModifiers.pm',
-    'lib/Moose/Exception/RolesInCreateTakesAnArrayRef.pm',
-    'lib/Moose/Exception/RolesListMustBeInstancesOfMooseMetaRole.pm',
-    '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',
-    'lib/Moose/Exception/UnableToRecognizeDelegateMetaclass.pm',
-    'lib/Moose/Exception/UndefinedHashKeysPassedToMethod.pm',
-    'lib/Moose/Exception/UnionCalledWithAnArrayRefAndAdditionalArgs.pm',
-    'lib/Moose/Exception/UnionTakesAtleastTwoTypeNames.pm',
-    'lib/Moose/Exception/ValidationFailedForInlineTypeConstraint.pm',
-    'lib/Moose/Exception/ValidationFailedForTypeConstraint.pm',
-    'lib/Moose/Exception/WrapTakesACodeRefToBless.pm',
-    'lib/Moose/Exception/WrongTypeConstraintGiven.pm',
-    'lib/Moose/Exporter.pm',
-    'lib/Moose/Intro.pod',
-    'lib/Moose/Manual.pod',
-    'lib/Moose/Manual/Attributes.pod',
-    'lib/Moose/Manual/BestPractices.pod',
-    'lib/Moose/Manual/Classes.pod',
-    'lib/Moose/Manual/Concepts.pod',
-    'lib/Moose/Manual/Construction.pod',
-    'lib/Moose/Manual/Contributing.pod',
-    'lib/Moose/Manual/Delegation.pod',
-    'lib/Moose/Manual/Delta.pod',
-    'lib/Moose/Manual/Exceptions.pod',
-    'lib/Moose/Manual/Exceptions/Manifest.pod',
-    'lib/Moose/Manual/FAQ.pod',
-    'lib/Moose/Manual/MOP.pod',
-    'lib/Moose/Manual/MethodModifiers.pod',
-    'lib/Moose/Manual/MooseX.pod',
-    'lib/Moose/Manual/Roles.pod',
-    'lib/Moose/Manual/Support.pod',
-    'lib/Moose/Manual/Types.pod',
-    'lib/Moose/Manual/Unsweetened.pod',
-    'lib/Moose/Meta/Attribute.pm',
-    'lib/Moose/Meta/Attribute/Native.pm',
-    'lib/Moose/Meta/Attribute/Native/Trait.pm',
-    'lib/Moose/Meta/Attribute/Native/Trait/Array.pm',
-    'lib/Moose/Meta/Attribute/Native/Trait/Bool.pm',
-    'lib/Moose/Meta/Attribute/Native/Trait/Code.pm',
-    'lib/Moose/Meta/Attribute/Native/Trait/Counter.pm',
-    'lib/Moose/Meta/Attribute/Native/Trait/Hash.pm',
-    'lib/Moose/Meta/Attribute/Native/Trait/Number.pm',
-    'lib/Moose/Meta/Attribute/Native/Trait/String.pm',
-    'lib/Moose/Meta/Class.pm',
-    'lib/Moose/Meta/Class/Immutable/Trait.pm',
-    'lib/Moose/Meta/Instance.pm',
-    'lib/Moose/Meta/Method.pm',
-    'lib/Moose/Meta/Method/Accessor.pm',
-    'lib/Moose/Meta/Method/Accessor/Native.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Array.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Array/Writer.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Array/accessor.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Array/clear.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Array/count.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Array/delete.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Array/elements.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Array/first.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Array/first_index.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Array/get.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Array/grep.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Array/insert.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Array/is_empty.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Array/join.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Array/map.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Array/natatime.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Array/pop.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Array/push.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Array/reduce.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Array/set.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Array/shallow_clone.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Array/shift.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Array/shuffle.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Array/sort.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Array/sort_in_place.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Array/splice.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Array/uniq.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Array/unshift.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Bool/not.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Bool/set.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Bool/toggle.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Bool/unset.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Code/execute.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Code/execute_method.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Collection.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Counter/Writer.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Counter/dec.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Counter/inc.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Counter/reset.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Counter/set.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Hash.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Hash/Writer.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Hash/accessor.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Hash/clear.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Hash/count.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Hash/defined.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Hash/delete.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Hash/elements.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Hash/exists.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Hash/get.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Hash/is_empty.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Hash/keys.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Hash/kv.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Hash/set.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Hash/shallow_clone.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Hash/values.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Number/abs.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Number/add.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Number/div.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Number/mod.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Number/mul.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Number/set.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Number/sub.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Reader.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/String/append.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/String/chomp.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/String/chop.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/String/clear.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/String/inc.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/String/length.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/String/match.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/String/prepend.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/String/replace.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/String/substr.pm',
-    'lib/Moose/Meta/Method/Accessor/Native/Writer.pm',
-    'lib/Moose/Meta/Method/Augmented.pm',
-    'lib/Moose/Meta/Method/Constructor.pm',
-    'lib/Moose/Meta/Method/Delegation.pm',
-    'lib/Moose/Meta/Method/Destructor.pm',
-    'lib/Moose/Meta/Method/Meta.pm',
-    'lib/Moose/Meta/Method/Overridden.pm',
-    'lib/Moose/Meta/Mixin/AttributeCore.pm',
-    'lib/Moose/Meta/Object/Trait.pm',
-    'lib/Moose/Meta/Role.pm',
-    'lib/Moose/Meta/Role/Application.pm',
-    'lib/Moose/Meta/Role/Application/RoleSummation.pm',
-    'lib/Moose/Meta/Role/Application/ToClass.pm',
-    'lib/Moose/Meta/Role/Application/ToInstance.pm',
-    'lib/Moose/Meta/Role/Application/ToRole.pm',
-    'lib/Moose/Meta/Role/Attribute.pm',
-    'lib/Moose/Meta/Role/Composite.pm',
-    'lib/Moose/Meta/Role/Method.pm',
-    'lib/Moose/Meta/Role/Method/Conflicting.pm',
-    'lib/Moose/Meta/Role/Method/Required.pm',
-    'lib/Moose/Meta/TypeCoercion.pm',
-    'lib/Moose/Meta/TypeCoercion/Union.pm',
-    'lib/Moose/Meta/TypeConstraint.pm',
-    'lib/Moose/Meta/TypeConstraint/Class.pm',
-    'lib/Moose/Meta/TypeConstraint/DuckType.pm',
-    'lib/Moose/Meta/TypeConstraint/Enum.pm',
-    'lib/Moose/Meta/TypeConstraint/Parameterizable.pm',
-    'lib/Moose/Meta/TypeConstraint/Parameterized.pm',
-    'lib/Moose/Meta/TypeConstraint/Registry.pm',
-    'lib/Moose/Meta/TypeConstraint/Role.pm',
-    'lib/Moose/Meta/TypeConstraint/Union.pm',
-    'lib/Moose/Object.pm',
-    'lib/Moose/Role.pm',
-    'lib/Moose/Spec/Role.pod',
-    'lib/Moose/Unsweetened.pod',
-    'lib/Moose/Util.pm',
-    'lib/Moose/Util/MetaRole.pm',
-    'lib/Moose/Util/TypeConstraints.pm',
-    'lib/Moose/Util/TypeConstraints/Builtins.pm',
-    'lib/Test/Moose.pm',
-    'lib/metaclass.pm',
-    'lib/oose.pm'
-);
-
-notabs_ok($_) foreach @files;
-done_testing;
@@ -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();