Buggy code:
root . registerReadOnlyAttribute ( PROCESS_TYPE , ( isMaster ? ProcessTypeHandler . MASTER : ProcessTypeHandler . SLAVE ) , RUNTIME ) ; root . registerReadOnlyAttribute ( LAUNCH_TYPE , new org . jboss . as . server . operations . LaunchTypeHandler ( LaunchType . DOMAIN ) , RUNTIME ) ; root . registerOperationHandler ( VALIDATE_ADDRESS_OPERATION_NAME , VALIDATE_ADDRESS , VALIDATE_ADDRESS_PROVIDER , true ) ; ManagementResourceRegistration systemProperties = root . registerSubModel ( PathElement . pathElement ( SYSTEM_PROPERTY ) , SYSTEM_PROPERTY_PROVIDER ) ; systemProperties . registerOperationHandler ( SystemPropertyAddHandler . OPERATION_NAME , INSTANCE_WITH_BOOTTIME , INSTANCE_WITH_BOOTTIME , false ) ; systemProperties . registerOperationHandler ( SystemPropertyRemoveHandler . OPERATION_NAME , SystemPropertyRemoveHandler . INSTANCE , SystemPropertyRemoveHandler . INSTANCE , false ) ; systemProperties . registerReadWriteAttribute ( VALUE , null , SystemPropertyValueWriteAttributeHandler . INSTANCE , CONFIGURATION ) ; systemProperties . registerReadWriteAttribute ( BOOT_TIME , null , new org . jboss . as . controller . operations . global . WriteAttributeHandlers . ModelTypeValidatingHandler ( ModelType . BOOLEAN ) , CONFIGURATION ) ; final ManagementResourceRegistration interfaces = root . registerSubModel ( PathElement . pathElement ( INTERFACE ) , NAMED_INTERFACE_PROVIDER ) ; interfaces . registerOperationHandler ( ADD , NAMED_INSTANCE , NAMED_INSTANCE , false ) ; interfaces . registerOperationHandler ( REMOVE , NAMED_INSTANCE , NAMED_INSTANCE , false ) ; InterfaceCriteriaWriteHandler . register ( interfaces ) ; interfaces . registerReadOnlyAttribute ( CRITERIA , InterfaceLegacyCriteriaReadHandler . INSTANCE , CONFIGURATION ) ; final ManagementResourceRegistration profile = root . registerSubModel ( PathElement . pathElement ( PROFILE ) , DomainDescriptionProviders . PROFILE ) ; profile . registerOperationHandler ( ADD , ProfileAddHandler . INSTANCE , ProfileAddHandler . INSTANCE , false ) ; profile . registerOperationHandler ( REMOVE , ProfileRemoveHandler . INSTANCE , ProfileRemoveHandler . INSTANCE , false ) ; profile . registerOperationHandler ( DESCRIBE , ProfileDescribeHandler . INSTANCE , ProfileDescribeHandler . INSTANCE , false , PRIVATE , readOnly ) ; final ManagementResourceRegistration paths = root . registerSubModel ( PathElement . pathElement ( PATH ) , PATH_DESCRIPTION ) ; paths . registerOperationHandler ( ADD , PathAddHandler . NAMED_INSTANCE , PathAddHandler . NAMED_INSTANCE , false ) ; paths . registerOperationHandler ( REMOVE , PathRemoveHandler . INSTANCE , PathRemoveHandler . INSTANCE , false ) ; final ManagementResourceRegistration socketBindingGroup = root . registerSubModel ( new org . jboss . as . controller . resource . SocketBindingGroupResourceDefinition ( SocketBindingGroupAddHandler . INSTANCE , SocketBindingGroupRemoveHandler . INSTANCE , true ) ) ; socketBindingGroup . registerSubModel ( SocketBindingResourceDefinition . INSTANCE ) ; socketBindingGroup . registerSubModel ( RemoteDestinationOutboundSocketBindingResourceDefinition . INSTANCE ) ; socketBindingGroup . registerSubModel ( LocalDestinationOutboundSocketBindingResourceDefinition . INSTANCE ) ; final ManagementResourceRegistration serverGroups = root . registerSubModel ( PathElement . pathElement ( SERVER_GROUP ) , DomainDescriptionProviders . SERVER_GROUP ) ; serverGroups . registerOperationHandler ( ADD , ServerGroupAddHandler . INSTANCE , ServerGroupAddHandler . INSTANCE , false ) ; serverGroups . registerOperationHandler ( REMOVE , ServerGroupRemoveHandler . INSTANCE , ServerGroupRemoveHandler . INSTANCE , false ) ; serverGroups . registerReadWriteAttribute ( SOCKET_BINDING_GROUP , null , WriteAttributeHandlers . WriteAttributeOperationHandler . INSTANCE , CONFIGURATION ) ; serverGroups . registerReadWriteAttribute ( SOCKET_BINDING_PORT_OFFSET , null , new IntRangeValidatingHandler ( 0 ) , CONFIGURATION ) ; final ManagementResourceRegistration groupVMs = serverGroups . registerSubModel ( PathElement . pathElement ( JVM ) , JVM_PROVIDER ) ; JVMHandlers . register ( groupVMs ) ; ServerGroupDeploymentReplaceHandler sgdrh = new ServerGroupDeploymentReplaceHandler ( fileRepository ) ; serverGroups . registerOperationHandler ( ServerGroupDeploymentReplaceHandler . OPERATION_NAME , sgdrh , sgdrh ) ; final ManagementResourceRegistration serverGroupDeployments = serverGroups . registerSubModel ( PathElement . pathElement ( DEPLOYMENT ) , SERVER_GROUP_DEPLOYMENT ) ; ServerGroupDeploymentAddHandler sgdah = new ServerGroupDeploymentAddHandler ( fileRepository ) ; serverGroupDeployments . registerOperationHandler ( ServerGroupDeploymentAddHandler . OPERATION_NAME , sgdah , sgdah ) ; serverGroupDeployments . registerOperationHandler ( ServerGroupDeploymentDeployHandler . OPERATION_NAME , ServerGroupDeploymentDeployHandler . INSTANCE , ServerGroupDeploymentDeployHandler . INSTANCE ) ; serverGroupDeployments . registerOperationHandler ( ServerGroupDeploymentRedeployHandler . OPERATION_NAME , ServerGroupDeploymentRedeployHandler . INSTANCE , ServerGroupDeploymentRedeployHandler . INSTANCE ) ; serverGroupDeployments . registerOperationHandler ( ServerGroupDeploymentUndeployHandler . OPERATION_NAME , ServerGroupDeploymentUndeployHandler . INSTANCE , ServerGroupDeploymentUndeployHandler . INSTANCE ) ; serverGroupDeployments . registerOperationHandler ( DeploymentRemoveHandler . OPERATION_NAME , ServerGroupDeploymentRemoveHandler . INSTANCE , ServerGroupDeploymentRemoveHandler . INSTANCE ) ; ManagementResourceRegistration serverGroupSystemProperties = serverGroups . registerSubModel ( PathElement . pathElement ( SYSTEM_PROPERTY ) , SERVER_GROUP_SYSTEM_PROPERTY_PROVIDER ) ; serverGroupSystemProperties . registerOperationHandler ( SystemPropertyAddHandler . OPERATION_NAME , INSTANCE_WITH_BOOTTIME , INSTANCE_WITH_BOOTTIME , false ) ; serverGroupSystemProperties . registerOperationHandler ( SystemPropertyRemoveHandler . OPERATION_NAME , SystemPropertyRemoveHandler . INSTANCE , SystemPropertyRemoveHandler . INSTANCE , false ) ; serverGroupSystemProperties . registerReadWriteAttribute ( VALUE , null , SystemPropertyValueWriteAttributeHandler . INSTANCE , CONFIGURATION ) ; serverGroupSystemProperties . registerReadWriteAttribute ( BOOT_TIME , null , new org . jboss . as . controller . operations . global . WriteAttributeHandlers . ModelTypeValidatingHandler ( ModelType . BOOLEAN ) , CONFIGURATION ) ; final ManagementResourceRegistration deployments = root . registerSubModel ( PathElement . pathElement ( DEPLOYMENT ) , DEPLOYMENT_PROVIDER ) ; DeploymentAddHandler dah = new DeploymentAddHandler ( contentRepo ) ; deployments . registerOperationHandler ( DeploymentAddHandler . OPERATION_NAME , dah , dah ) ; deployments . registerOperationHandler ( DeploymentRemoveHandler . OPERATION_NAME , DeploymentRemoveHandler . INSTANCE , DeploymentRemoveHandler . INSTANCE ) ; final ManagementResourceRegistration extensions = root . registerSubModel ( PathElement . pathElement ( EXTENSION ) , EXTENSION_PROVIDER ) ; final ExtensionContext extensionContext = new org . jboss . as . controller . ExtensionContextImpl ( profile , deployments , configurationPersister , ( isMaster ? ProcessType . MASTER_HOST_CONTROLLER : ProcessType . SLAVE_HOST_CONTROLLER ) ) ; <START_BUG> final ExtensionAddHandler addExtensionHandler = new ExtensionAddHandler ( extensionContext ) ; <END_BUG> extensions . registerOperationHandler ( ExtensionAddHandler . OPERATION_NAME , addExtensionHandler , addExtensionHandler , false ) ; extensions . registerOperationHandler ( ExtensionRemoveHandler . OPERATION_NAME , ExtensionRemoveHandler . INSTANCE , ExtensionRemoveHandler . INSTANCE , false ) ; if ( ! isMaster ) { ApplyRemoteMasterDomainModelHandler armdmh = new ApplyRemoteMasterDomainModelHandler ( extensionContext , fileRepository , hostControllerInfo ) ; root . registerOperationHandler ( ApplyRemoteMasterDomainModelHandler . OPERATION_NAME , armdmh , armdmh , false , PRIVATE ) ; } else { ReadMasterDomainModelHandler rmdmh = new ReadMasterDomainModelHandler ( domainController , registry ) ; root . registerOperationHandler ( ReadMasterDomainModelHandler . OPERATION_NAME , rmdmh , rmdmh , false , PRIVATE , EnumSet . of ( READ_ONLY ) ) ; } return extensionContext ; } }

Fix:
final ExtensionAddHandler addExtensionHandler = new ExtensionAddHandler ( extensionContext , true ) ;