class Entry {
        public int count;
        public int first;
        Entry(int count, int first) {
            this.count = count;
            this.first = first;
        }
    }
    public Map<Integer, Entry> deletes; // {get; set; }
    public ChunkArray<Node> nodes;
    /// <summary>Create a new instance of SymSpell.SuggestionStage.</summary>
    /// <remarks>Specifying ann accurate initialCapacity is not essential,
    /// but it can help speed up processing by alleviating the need for
    /// data restructuring as the size grows.</remarks>
    /// <param name="initialCapacity">The expected number of words that will be added.</param>

    /// <summary>Gets the count of unique delete words.</summary>
    public int deleteCount() { return deletes.size(); }
    /// <summary>Gets the total count of all suggestions for all deletes.</summary>
    public int nodeCount() { return nodes.count; }
    /// <summary>Clears all the data from the SuggestionStaging.</summary>
    public void clear() {
        deletes.clear();
        nodes.clear();
    }

    void add(int deleteHash, String suggestion) {<FILL_FUNCTION_BODY>

        Entry entry = deletes.getOrDefault(deleteHash, new Entry(0, -1));
        int next = entry.first;
        entry.count++;
        entry.first = nodes.count;
        deletes.put(deleteHash, entry);
        nodes.add(new Node(suggestion, next));
    
<no_super_class>