// Path: src/main/java/com/kasirgalabs/etumulator/lang/Linker.java
// public static class ExecutableCode {
//     private final String[] code;
//     private final List<Data> data;
// 
//     private ExecutableCode(String[] code, List<Data> data) {
//         this.code = new String[code.length];
//         for(int i = 0; i < code.length; i++) {
//             this.code[i] = code[i];
//         }
//         this.data = new ArrayList<>(data.size());
//         for(int i = 0; i < data.size(); i++) {
//             this.data.add(new Data(data.get(i)));
//         }
//     }
// 
//     public String[] getCode() {
//         String[] temp = new String[code.length];
//         for(int i = 0; i < code.length; i++) {
//             temp[i] = code[i];
//         }
//         return temp;
//     }
// 
//     public List<Data> getData() {
//         List<Data> temp = new ArrayList<>(data.size());
//         for(int i = 0; i < data.size(); i++) {
//             temp.add(new Data(data.get(i)));
//         }
//         return temp;
//     }
// }


import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.kasirgalabs.etumulator.lang.Linker.ExecutableCode;
import java.util.concurrent.Callable;
import java.util.concurrent.CancellationException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import javafx.application.Platform;
package com.kasirgalabs.etumulator.processor;


@Singleton
public class GUISafeProcessor extends BaseProcessor implements Callable<Void> {
    private final ExecutorService executor;
    private Future<Void> future;
    private ExecutableCode executableCode;

    @Inject
    public GUISafeProcessor(GUISafeProcessorUnits processorUnits) {
        super(processorUnits);
        executor = Executors.newSingleThreadExecutor();
    }

    @Override
// Path: src/main/java/com/kasirgalabs/etumulator/lang/Linker.java
// public static class ExecutableCode {
//     private final String[] code;
//     private final List<Data> data;
// 
//     private ExecutableCode(String[] code, List<Data> data) {
//         this.code = new String[code.length];
//         for(int i = 0; i < code.length; i++) {
//             this.code[i] = code[i];
//         }
//         this.data = new ArrayList<>(data.size());
//         for(int i = 0; i < data.size(); i++) {
//             this.data.add(new Data(data.get(i)));
//         }
//     }
// 
//     public String[] getCode() {
//         String[] temp = new String[code.length];
//         for(int i = 0; i < code.length; i++) {
//             temp[i] = code[i];
//         }
//         return temp;
//     }
// 
//     public List<Data> getData() {
//         List<Data> temp = new ArrayList<>(data.size());
//         for(int i = 0; i < data.size(); i++) {
//             temp.add(new Data(data.get(i)));
//         }
//         return temp;
//     }
// }


// Path: src/main/java/com/kasirgalabs/etumulator/processor/GUISafeProcessor.java
import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.kasirgalabs.etumulator.lang.Linker.ExecutableCode;
import java.util.concurrent.Callable;
import java.util.concurrent.CancellationException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import javafx.application.Platform;

package com.kasirgalabs.etumulator.processor;


@Singleton
public class GUISafeProcessor extends BaseProcessor implements Callable<Void> {
    private final ExecutorService executor;
    private Future<Void> future;
    private ExecutableCode executableCode;

    @Inject
    public GUISafeProcessor(GUISafeProcessorUnits processorUnits) {
        super(processorUnits);
        executor = Executors.newSingleThreadExecutor();
    }

    @Override
    public void run(ExecutableCode executableCode) {