class NodeClient extends AbstractClient {

    @SuppressWarnings("rawtypes")
    private Map<ActionType, TransportAction> actions;

    public NodeClient(Settings settings, ThreadPool threadPool) {
        super(settings, threadPool);
    }

    @SuppressWarnings("rawtypes")
    public void initialize(Map<ActionType, TransportAction> actions) {
        this.actions = actions;
    }

    @Override
    public void close() {
        // nothing really to do
    }

    @Override
    public <Req extends TransportRequest, Resp extends TransportResponse> CompletableFuture<Resp> execute(ActionType<Resp> action, Req request) {
        return transportAction(action).execute(request);
    }

    /**
     * Get the {@link TransportAction} for an {@link ActionType}, throwing exceptions if the action isn't available.
     */
    @SuppressWarnings("unchecked")
    private <Request extends TransportRequest,
             Response extends TransportResponse> TransportAction<Request, Response> transportAction(ActionType<Response> action) {<FILL_FUNCTION_BODY>}
}

        if (actions == null) {
            throw new IllegalStateException("NodeClient has not been initialized");
        }
        TransportAction<Request, Response> transportAction = actions.get(action);
        if (transportAction == null) {
            throw new IllegalStateException("failed to find action [" + action + "] to execute");
        }
        return transportAction;
    
<methods>public void <init>(org.elasticsearch.common.settings.Settings, org.elasticsearch.threadpool.ThreadPool) ,public final org.elasticsearch.client.AdminClient admin() ,public final org.elasticsearch.common.settings.Settings settings() ,public final org.elasticsearch.threadpool.ThreadPool threadPool() <variables>private final non-sealed org.elasticsearch.client.support.AbstractClient.Admin admin,protected final non-sealed org.elasticsearch.common.settings.Settings settings,private final non-sealed org.elasticsearch.threadpool.ThreadPool threadPool