Stuff like `ISMINE_USED` is not self-explanatory and completely undocumented: https://dev.visucore.com/bitcoin/doxygen/ismine_8h.html#a050f9a1a807967a24bcbeebfc5952533
{
    ISMINE_NO         = 0,
    ISMINE_WATCH_ONLY = 1 << 0,
    ISMINE_SPENDABLE  = 1 << 1,
    ISMINE_USED       = 1 << 2,
    ISMINE_ALL        = ISMINE_WATCH_ONLY | ISMINE_SPENDABLE,
    ISMINE_ALL_USED   = ISMINE_ALL | ISMINE_USED,
    ISMINE_ENUM_ELEMENTS,
};
typedef uint8_t isminefilter;
/**
 * Cachable amount subdivided into watchonly and spendable parts.
 */
struct CachableAmount
{
    
    std::bitset<ISMINE_ENUM_ELEMENTS> m_cached;
    CAmount m_value[ISMINE_ENUM_ELEMENTS];
    inline void Reset()
    {
        m_cached.reset();
    }
    void Set(isminefilter filter, CAmount value)
    {
        m_cached.set(filter);
        m_value[filter] = value;
    }
};
#endif