class NetworkCommunicationDispatcher extends ServerCommunicationDispatcher {

    @VisibleForTesting
    static MethodCall[] verifyNoExceptions(final MethodCall[] result,
                                           final Message[] messages,
                                           final MethodCall methodCall) {
        int size = result.length;
        List<String> remoteExceptions = null;
        for ( int i = 0; i < size; i++ ) {
            Message message = messages[i];
            Address destination = message.getDest();
            if ( result[i] != null ) {
                String exceptionAsString = result[i].getExceptionAsString();
                if ( exceptionAsString != null ) {
                    if ( remoteExceptions == null )
                        remoteExceptions = Lists.newArrayList();
                    remoteExceptions.add( String.format( "failed to execute %s on %s due to: \n %s", methodCall, destination, exceptionAsString ) );
                }
            }
        }

        if ( remoteExceptions != null ) {
            StringBuilder builder = new StringBuilder();
            builder.append( "unable to call remote method(s) due to single(multiple) failures: " ).append( "\n" );
            for ( String e : remoteExceptions ) {
                builder.append( "\t" );
                builder.append( e );
                builder.append( "\n" );
            }
            String failure = builder.toString();
            LOGGER.error( failure );
            throw new RemoteAccessException( failure );
        }
        return result;
    }

    public  NetworkCommunicationDispatcher(final AbstractSpaceConfiguration configuration);

}