Buggy code:
public class ControllerInitializer { public static final String INTERFACE_NAME = "test-interface" ; public static final String SOCKET_BINDING_GROUP_NAME = "test-socket-binding-group" ; protected volatile String bindAddress = "localhost" ; protected final Map < String , String > systemProperties = new HashMap < String , String > ( ) ; protected final Map < String , Integer > socketBindings = new HashMap < String , Integer > ( ) ; protected final Map < String , ControllerInitializer . OutboundSocketBinding > outboundSocketBindings = new HashMap < String , ControllerInitializer . OutboundSocketBinding > ( ) ; protected final Map < String , ControllerInitializer . PathInfo > paths = new HashMap < String , ControllerInitializer . PathInfo > ( ) ; public void addSystemProperty ( String key , String value ) { } public void setBindAddress ( String address ) { } public void addSocketBinding ( String name , int port ) { } public void addRemoteOutboundSocketBinding ( final String name , final String destinationHost , final int destinationPort ) { } public void addPath ( String name , String path , String relativeTo ) { } protected void initializeModel ( Resource rootResource , ManagementResourceRegistration rootRegistration ) { } protected List < ModelNode > initializeBootOperations ( ) { } protected void initializeSystemPropertiesModel ( Resource rootResource , ManagementResourceRegistration rootRegistration ) { } protected void initializeSocketBindingsModel ( Resource rootResource , ManagementResourceRegistration rootRegistration ) { if ( ( ( socketBindings . size ( ) ) == 0 ) && ( outboundSocketBindings . isEmpty ( ) ) ) { return ; } rootResource . getModel ( ) . get ( INTERFACE ) ; rootResource . getModel ( ) . get ( SOCKET_BINDING_GROUP ) ; ManagementResourceRegistration interfaces = rootRegistration . registerSubModel ( PathElement . pathElement ( INTERFACE ) , SPECIFIED_INTERFACE_PROVIDER ) ; interfaces . registerOperationHandler ( OPERATION_NAME , INSTANCE , INSTANCE , false ) ; interfaces . registerOperationHandler ( SpecifiedInterfaceRemoveHandler . OPERATION_NAME , SpecifiedInterfaceRemoveHandler . INSTANCE , SpecifiedInterfaceRemoveHandler . INSTANCE , false ) ; <START_BUG> InterfaceCriteriaWriteHandler . register ( interfaces ) ; <END_BUG> ManagementResourceRegistration socketGroup = rootRegistration . registerSubModel ( new org . jboss . as . controller . resource . SocketBindingGroupResourceDefinition ( BindingGroupAddHandler . INSTANCE , SocketBindingGroupRemoveHandler . INSTANCE , false ) ) ; socketGroup . registerSubModel ( SocketBindingResourceDefinition . INSTANCE ) ; socketGroup . registerSubModel ( RemoteDestinationOutboundSocketBindingResourceDefinition . INSTANCE ) ; socketGroup . registerSubModel ( LocalDestinationOutboundSocketBindingResourceDefinition . INSTANCE ) ; } protected void initializePathsModel ( Resource rootResource , ManagementResourceRegistration rootRegistration ) { } protected void initializeSystemPropertiesOperations ( List < ModelNode > ops ) { } protected void initializeSocketBindingsOperations ( List < ModelNode > ops ) { } protected void initializeRemoteOutboundSocketBindingsOperations ( List < ModelNode > ops ) { } protected void initializePathsOperations ( List < ModelNode > ops ) { } private static class PathInfo { private final String name ; private final String path ; private final String relativeTo ; public PathInfo ( String name , String path , String relativeTo ) { } public String getName ( ) { } public String getPath ( ) { } public String getRelativeTo ( ) { } } private static class OutboundSocketBinding { private final String destination ; private final int port ; private final boolean remote ; OutboundSocketBinding ( final String destination , final int port , final boolean remote ) { } int getDestinationPort ( ) { } String getDestination ( ) { } boolean isRemote ( ) { } } }

Fix:
UPDATE_RUNTIME . register ( interfaces ) ;