// Path: randomizer/Randomizer.java
// public class Randomizer extends Application {
//     public static void main(String[] args) {
//         launch(args);
//     }
// 
//     @Override
//     public void start(Stage primaryStage) {
//         try {
//             // Create and display the main stage.
//             Gui.getInstance().setMainStage(primaryStage);
//             Parent root = FXMLLoader.load(this.getClass().getResource("gui/fxml/Verification.fxml"));
//             Scene scene = new Scene(root, 320, 260);
//             scene.getStylesheets().add(getClass().getResource("gui/jmetro/JMetroLightTheme.css").toExternalForm());
//             primaryStage.setScene(scene);
//             primaryStage.setResizable(false);
//             primaryStage.getIcons().add(new Image(this.getClass().getResourceAsStream("icon.png")));
//             primaryStage.setTitle("Randomizer Verification");
//             primaryStage.show();
//         } catch (Exception e) {
//             e.printStackTrace();
//         }
//     }
// }
// 
// Path: randomizer/common/enums/ItemType.java
// public enum ItemType {
//     Swords,
//     Lances,
//     Axes,
//     Tomes,
//     Bows,
//     Shurikens,
//     Staves,
//     Beaststone,
//     Treasure,
//     Fists,
//     DarkBreath,
//     Breaths,
//     Stones,
//     Saws
// }
// 
// Path: randomizer/common/structures/FEItem.java
// public class FEItem {
//     private String iid;
//     private String name;
//     private ItemType type;
// 
//     public FEItem() {
// 
//     }
// 
//     public String getIid() {
//         return iid;
//     }
// 
//     public void setIid(String iid) {
//         this.iid = iid;
//     }
// 
//     public ItemType getType() {
//         return type;
//     }
// 
//     public void setType(ItemType type) {
//         this.type = type;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// }
// 
// Path: randomizer/common/structures/Job.java
// public class Job 
// {
// 	private JobState state;
// 	private String jid;
// 	private String name;
// 	private ItemType itemType;
// 	private short tiedJob;
// 	private short id;
// 	private byte weaponRank;
// 	private byte gender;
// 	
// 	private Skill[] skills;
// 	
// 	public Job() {
// 		
// 	}
// 	
// 	@Override public String toString()
// 	{
// 		return name;
// 	}
// 
// 	public JobState getState() {
// 		return state;
// 	}
// 
// 	public void setState(JobState state) {
// 		this.state = state;
// 	}
// 
// 	public String getJid() {
// 		return jid;
// 	}
// 
// 	public void setJid(String jid) {
// 		this.jid = jid;
// 	}
// 
// 	public short getId() {
// 		return id;
// 	}
// 
// 	public void setId(short id) {
// 		this.id = id;
// 	}
// 
// 	public byte getWeaponRank() {
// 		return weaponRank;
// 	}
// 
// 	public void setWeaponRank(byte weaponRank) {
// 		this.weaponRank = weaponRank;
// 	}
// 
// 	public Short getTiedJob() {
// 		return tiedJob;
// 	}
// 
// 	public void setTiedJob(Short tiedJob) {
// 		this.tiedJob = tiedJob;
// 	}
// 
// 	public ItemType getItemType() {
// 		return itemType;
// 	}
// 
// 	public void setItemType(ItemType weaponType) {
// 		this.itemType = weaponType;
// 	}
// 
// 	public int getGender() {
// 		return gender;
// 	}
// 
// 	public void setGender(byte gender) {
// 		this.gender = gender;
// 	}
// 
// 	public Skill[] getSkills() {
// 		return skills;
// 	}
// 
// 	public void setSkills(Skill[] skills) {
// 		this.skills = skills;
// 	}
// 
// 	public String getName() {
// 		return name;
// 	}
// 
// 	public void setName(String name) {
// 		this.name = name;
// 	}
// }


import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
import randomizer.Randomizer;
import randomizer.common.enums.ItemType;
import randomizer.common.structures.FEItem;
import randomizer.common.structures.Job;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
                weapons.add(i);
        }
        return weapons;
    }

    public List<FEItem> getSelectedItems(ItemType type) {
        if(type == null)
            throw new IllegalArgumentException("Violation of precondidition: " +
                    "getSelectedItems. type must not be null.");

        List<FEItem> selected = new ArrayList<>();
        List<FEItem> weapons = getWeapons();
        boolean[] selectedItems = FatesGui.getInstance().getSelectedItems();
        for(int x = 0; x < weapons.size(); x++) {
            if(weapons.get(x).getType() == type && selectedItems[x])
                selected.add(weapons.get(x));
        }
        return selected;
    }

    public FEItem generateItem(Job j) {
        if(j == null)
            throw new IllegalArgumentException("Violation of precondidition: " +
                    "generateItem. j must not be null.");

        Random random = new Random();
        List<FEItem> items = getSelectedItems(j.getItemType());
        return items.get(random.nextInt(items.size()));
    }

// Path: randomizer/Randomizer.java
// public class Randomizer extends Application {
//     public static void main(String[] args) {
//         launch(args);
//     }
// 
//     @Override
//     public void start(Stage primaryStage) {
//         try {
//             // Create and display the main stage.
//             Gui.getInstance().setMainStage(primaryStage);
//             Parent root = FXMLLoader.load(this.getClass().getResource("gui/fxml/Verification.fxml"));
//             Scene scene = new Scene(root, 320, 260);
//             scene.getStylesheets().add(getClass().getResource("gui/jmetro/JMetroLightTheme.css").toExternalForm());
//             primaryStage.setScene(scene);
//             primaryStage.setResizable(false);
//             primaryStage.getIcons().add(new Image(this.getClass().getResourceAsStream("icon.png")));
//             primaryStage.setTitle("Randomizer Verification");
//             primaryStage.show();
//         } catch (Exception e) {
//             e.printStackTrace();
//         }
//     }
// }
// 
// Path: randomizer/common/enums/ItemType.java
// public enum ItemType {
//     Swords,
//     Lances,
//     Axes,
//     Tomes,
//     Bows,
//     Shurikens,
//     Staves,
//     Beaststone,
//     Treasure,
//     Fists,
//     DarkBreath,
//     Breaths,
//     Stones,
//     Saws
// }
// 
// Path: randomizer/common/structures/FEItem.java
// public class FEItem {
//     private String iid;
//     private String name;
//     private ItemType type;
// 
//     public FEItem() {
// 
//     }
// 
//     public String getIid() {
//         return iid;
//     }
// 
//     public void setIid(String iid) {
//         this.iid = iid;
//     }
// 
//     public ItemType getType() {
//         return type;
//     }
// 
//     public void setType(ItemType type) {
//         this.type = type;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// }
// 
// Path: randomizer/common/structures/Job.java
// public class Job 
// {
// 	private JobState state;
// 	private String jid;
// 	private String name;
// 	private ItemType itemType;
// 	private short tiedJob;
// 	private short id;
// 	private byte weaponRank;
// 	private byte gender;
// 	
// 	private Skill[] skills;
// 	
// 	public Job() {
// 		
// 	}
// 	
// 	@Override public String toString()
// 	{
// 		return name;
// 	}
// 
// 	public JobState getState() {
// 		return state;
// 	}
// 
// 	public void setState(JobState state) {
// 		this.state = state;
// 	}
// 
// 	public String getJid() {
// 		return jid;
// 	}
// 
// 	public void setJid(String jid) {
// 		this.jid = jid;
// 	}
// 
// 	public short getId() {
// 		return id;
// 	}
// 
// 	public void setId(short id) {
// 		this.id = id;
// 	}
// 
// 	public byte getWeaponRank() {
// 		return weaponRank;
// 	}
// 
// 	public void setWeaponRank(byte weaponRank) {
// 		this.weaponRank = weaponRank;
// 	}
// 
// 	public Short getTiedJob() {
// 		return tiedJob;
// 	}
// 
// 	public void setTiedJob(Short tiedJob) {
// 		this.tiedJob = tiedJob;
// 	}
// 
// 	public ItemType getItemType() {
// 		return itemType;
// 	}
// 
// 	public void setItemType(ItemType weaponType) {
// 		this.itemType = weaponType;
// 	}
// 
// 	public int getGender() {
// 		return gender;
// 	}
// 
// 	public void setGender(byte gender) {
// 		this.gender = gender;
// 	}
// 
// 	public Skill[] getSkills() {
// 		return skills;
// 	}
// 
// 	public void setSkills(Skill[] skills) {
// 		this.skills = skills;
// 	}
// 
// 	public String getName() {
// 		return name;
// 	}
// 
// 	public void setName(String name) {
// 		this.name = name;
// 	}
// }


// Path: randomizer/fates/singletons/FatesItems.java
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
import randomizer.Randomizer;
import randomizer.common.enums.ItemType;
import randomizer.common.structures.FEItem;
import randomizer.common.structures.Job;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

                weapons.add(i);
        }
        return weapons;
    }

    public List<FEItem> getSelectedItems(ItemType type) {
        if(type == null)
            throw new IllegalArgumentException("Violation of precondidition: " +
                    "getSelectedItems. type must not be null.");

        List<FEItem> selected = new ArrayList<>();
        List<FEItem> weapons = getWeapons();
        boolean[] selectedItems = FatesGui.getInstance().getSelectedItems();
        for(int x = 0; x < weapons.size(); x++) {
            if(weapons.get(x).getType() == type && selectedItems[x])
                selected.add(weapons.get(x));
        }
        return selected;
    }

    public FEItem generateItem(Job j) {
        if(j == null)
            throw new IllegalArgumentException("Violation of precondidition: " +
                    "generateItem. j must not be null.");

        Random random = new Random();
        List<FEItem> items = getSelectedItems(j.getItemType());
        return items.get(random.nextInt(items.size()));
    }

    public FEItem generatePlayerItem(Job j) {