class RestoreShardRequest<T extends SingleShardRequest<T>> extends SingleShardRequest<T>
    implements RemoteClusterAwareRequest {

    private final String restoreUUID;
    private final DiscoveryNode node;
    private final ShardId shardId;
    private final String subscriberClusterName;

    public RestoreShardRequest(String restoreUUID,
                               DiscoveryNode node,
                               ShardId shardId,
                               String subscriberClusterName) {
        super(shardId.getIndexName());
        this.restoreUUID = restoreUUID;
        this.node = node;
        this.shardId = shardId;
        this.subscriberClusterName = subscriberClusterName;
    }

    public RestoreShardRequest(StreamInput in) throws IOException {
        super(in);
        this.restoreUUID = in.readString();
        this.node = new DiscoveryNode(in);
        this.shardId = new ShardId(in);
        this.subscriberClusterName = in.readString();
    }

    @Override
    public void writeTo(StreamOutput out) throws IOException {
        super.writeTo(out);
        out.writeString(restoreUUID);
        node.writeTo(out);
        shardId.writeTo(out);
        out.writeString(subscriberClusterName);
    }

    @Override
    public DiscoveryNode getPreferredTargetNode() {
        return node;
    }

    public ShardId shardId() {
        return shardId;
    }

    public String subscriberClusterName() {
        return subscriberClusterName;
    }

    public String restoreUUID() {
        return restoreUUID;
    }

    @Override
    public String toString() {<FILL_FUNCTION_BODY>}
}

        return "RestoreShardRequest{" +
               "restoreUUID='" + restoreUUID + '\'' +
               ", node=" + node +
               ", shardId=" + shardId +
               ", subscriberClusterName='" + subscriberClusterName + '\'' +
               ", index='" + index + '\'' +
               '}';
    
<methods>public void <init>() ,public void <init>(org.elasticsearch.common.io.stream.StreamInput) throws java.io.IOException,public java.lang.String index() ,public final T index(java.lang.String) ,public java.lang.String[] indices() ,public org.elasticsearch.action.support.IndicesOptions indicesOptions() ,public void writeTo(org.elasticsearch.common.io.stream.StreamOutput) throws java.io.IOException<variables>public static final org.elasticsearch.action.support.IndicesOptions INDICES_OPTIONS,protected java.lang.String index,org.elasticsearch.index.shard.ShardId internalShardId