Moloch - bool[6] flags can be changed to a dedicated structure  Won't Fix
The Moloch contract uses a structure that includes an array of bools to store a few flags about the proposal:\\n```\\nbool[6] flags; // [sponsored, processed, didPass, cancelled, whitelist, guildkick]\\n```\\n\\nThis makes reasoning about the correctness of the code a bit complicated because one needs to remember what each item in the flag list stands for. The make the reader's life simpler a dedicated structure can be created that incorporates all of the required flags.\\n```\\n        bool[6] memory flags; // [sponsored, processed, didPass, cancelled, whitelist, guildkick]\\n```\\n
Based on the provided examples change the `bool[6] flags` to the proposed examples.\\nFlags as bool array with enum (proposed)\\nThis second contract implements the `flags` as a defined structure with each named element representing a specific flag. This method makes clear which flag is accessed because they are referred to by the name, not by the index.\\nThis third contract has the least amount of changes to the code and uses an enum structure to handle the index.\\n```\\npragma solidity 0.5.15;\\n\\ncontract FlagsEnum {\\n    struct Proposal {\\n        address applicant;\\n        uint value;\\n        bool[3] flags; // [sponsored, processed, kicked]\\n    }\\n   \\n    enum ProposalFlags {\\n        SPONSORED,\\n        PROCESSED,\\n        KICKED\\n    }\\n   \\n    uint proposalCount;\\n   \\n    mapping(uint256 => Proposal) public proposals;\\n   \\n    function addProposal(uint \\_value, bool \\_sponsored, bool \\_processed, bool \\_kicked) public returns (uint) {\\n        Proposal memory proposal = Proposal({\\n            applicant: msg.sender,\\n            value: \\_value,\\n            flags: [\\_sponsored, \\_processed, \\_kicked]\\n        });\\n       \\n        proposals[proposalCount] = proposal;\\n        proposalCount += 1;\\n       \\n        return (proposalCount);\\n    }\\n   \\n    function getProposal(uint \\_proposalId) public view returns (address, uint, bool, bool, bool) {\\n        return (\\n            proposals[\\_proposalId].applicant,\\n            proposals[\\_proposalId].value,\\n            proposals[\\_proposalId].flags[uint(ProposalFlags.SPONSORED)],\\n            proposals[\\_proposalId].flags[uint(ProposalFlags.PROCESSED)],\\n            proposals[\\_proposalId].flags[uint(ProposalFlags.KICKED)]\\n        );\\n    }\\n}\\n```\\n
```\\nbool[6] flags; // [sponsored, processed, didPass, cancelled, whitelist, guildkick]\\n```\\n