Buggy code:
public class DomainModelControllerService extends AbstractControllerService implements DomainController , UnregisteredHostChannelRegistry { private static final Logger log = Logger . getLogger ( "org.jboss.as.host.controller" ) ; public static final ServiceName SERVICE_NAME = SERVICE_NAME_BASE . append ( "model" , "controller" ) ; private HostControllerConfigurationPersister hostControllerConfigurationPersister ; private final HostControllerEnvironment environment ; private final LocalHostControllerInfoImpl hostControllerInfo ; private final FileRepository localFileRepository ; private final RemoteFileRepository remoteFileRepository ; private final InjectedValue < ProcessControllerConnectionService > injectedProcessControllerConnection = new InjectedValue < ProcessControllerConnectionService > ( ) ; private final Map < String , ProxyController > hostProxies ; private final Map < String , ProxyController > serverProxies ; private final PrepareStepHandler prepareStepHandler ; private ManagementResourceRegistration modelNodeRegistration ; private final Map < String , ManagementChannel > unregisteredHostChannels = new HashMap < String , ManagementChannel > ( ) ; private final Map < String , ProxyCreatedCallback > proxyCreatedCallbacks = new HashMap < String , ProxyCreatedCallback > ( ) ; private final ExecutorService proxyExecutor = Executors . newCachedThreadPool ( ) ; private final AbstractVaultReader vaultReader ; private volatile ServerInventory serverInventory ; public static ServiceController < ModelController > addService ( final ServiceTarget serviceTarget , final HostControllerEnvironment environment , final ControlledProcessState processState ) { } private DomainModelControllerService ( final HostControllerEnvironment environment , final ControlledProcessState processState , final LocalHostControllerInfoImpl hostControllerInfo , final Map < String , ProxyController > hostProxies , final Map < String , ProxyController > serverProxies , final PrepareStepHandler prepareStepHandler , final AbstractVaultReader vaultReader ) { } @ Override public LocalHostControllerInfo getLocalHostInfo ( ) { } @ Override public void registerRemoteHost ( ProxyController hostControllerClient ) { } @ Override public void unregisterRemoteHost ( String id ) { } @ Override public void registerRunningServer ( ProxyController serverControllerClient ) { } @ Override public void unregisterRunningServer ( String serverName ) { } @ Override public ModelNode getProfileOperations ( String profileName ) { } @ Override public FileRepository getLocalFileRepository ( ) { } @ Override public FileRepository getRemoteFileRepository ( ) { } @ Override public void start ( StartContext context ) throws StartException { } @ Override protected void initModel ( Resource rootResource , ManagementResourceRegistration rootRegistration ) { } @ Override protected void boot ( final BootContext context ) throws ConfigurationPersistenceException { } private < T > T getFuture ( Future < T > future ) { } private void startServers ( ) { } @ Override public void stop ( StopContext context ) { } @ Override public void stopLocalHost ( ) { } @ Override public synchronized void registerChannel ( final String hostName , final ManagementChannel channel , final ProxyCreatedCallback callback ) { } @ Override public synchronized ProxyController popChannelAndCreateProxy ( final String hostName ) { <START_BUG> ManagementChannel channel = unregisteredHostChannels . remove ( hostName ) ; <END_BUG> if ( channel == null ) { throw new IllegalArgumentException ( ( "No<seq2seq4repair_space>channel<seq2seq4repair_space>for<seq2seq4repair_space>host<seq2seq4repair_space>" + hostName ) ) ; } channel . addCloseHandler ( new org . jboss . remoting3 . CloseHandler < Channel > ( ) { public void handleClose ( final Channel closed , final IOException exception ) { unregisterRemoteHost ( hostName ) ; } } ) ; final PathAddress addr = PathAddress . pathAddress ( PathElement . pathElement ( HOST , hostName ) ) ; RemoteProxyController proxy = RemoteProxyController . create ( proxyExecutor , addr , ProxyOperationAddressTranslator . HOST , channel ) ; ProxyCreatedCallback callback = proxyCreatedCallbacks . remove ( hostName ) ; if ( callback != null ) { callback . proxyCreated ( proxy ) ; } return proxy ; } private class DelegatingServerInventory implements ServerInventory { public void serverRegistered ( String serverProcessName , ManagementChannel channel , ProxyCreatedCallback callback ) { } public void serverStartFailed ( String serverProcessName ) { } public void serverStopped ( String serverProcessName ) { } public String getServerProcessName ( String serverName ) { } public String getProcessServerName ( String processName ) { } public void processInventory ( Map < String , ProcessInfo > processInfos ) { } public Map < String , ProcessInfo > determineRunningProcesses ( ) { } public Map < String , ProcessInfo > determineRunningProcesses ( boolean serversOnly ) { } public ServerStatus determineServerStatus ( String serverName ) { } public int hashCode ( ) { } public ServerStatus startServer ( String serverName , ModelNode domainModel ) { } public void reconnectServer ( String serverName , ModelNode domainModel , boolean running ) { } public ServerStatus restartServer ( String serverName , int gracefulTimeout , ModelNode domainModel ) { } public ServerStatus stopServer ( String serverName , int gracefulTimeout ) { } public CallbackHandler getServerCallbackHandler ( ) { } public boolean equals ( Object obj ) { } public String toString ( ) { } @ Override public void stopServers ( int gracefulTimeout ) { } } private static < S > S service ( final Class < S > service ) { } }

Fix:
final Channel channel = unregisteredHostChannels . remove ( hostName ) ;