public void freeSpills() {
        ArrayList<Value> permanentDeletions = new ArrayList<Value>();
        for(Value v : adjacencyList.keySet()) {
            if(v instanceof Fetch) {
                if(((Instruction)v).getUseCount() <= 1) {
                    // placeholder color to access it directly
                    // from its memory location
                    v.setColor(-1);
                    permanentDeletions.add(v);
                }
            } else if(v instanceof Instruction) {
                if(((Instruction)v).getUseCount() == 0) {
                    v.setColor(-1);
                    permanentDeletions.add(v);
                }
            }
        }
        // These nodes will have already been given their color now,
        // and can be permanantly removed from the graph, they will no
        // longer interfer with resources needed by any other nodes,
        // so we don't ever need to add them back in.
        for(Value v : permanentDeletions) {
            permanentlyDeleteNode(v);
        }
    }