class Community {

        // community id (stored as a backend vertex)
        private final Id cid;
        // community members size of last pass [just for skip large community]
        private int size = 0;
        // community members size of origin vertex [just for debug members lost]
        private float weight = 0f;
        /*
         * weight of all edges in community(2X), sum of kin of new members
         *  [each is from the last pass, stored in backend vertex]
         */
        private int kin = 0;
        /*
         * weight of all edges between communities, sum of kout of new members
         * [each is last pass, calculated in real time by neighbors]
         */
        private float kout = 0f;

        public Community(Id cid) {
            this.cid = cid;
        }

        public boolean empty() {
            return this.size <= 0;
        }

        public int size() {
            return this.size;
        }

        public float weight() {
            return this.weight;
        }

        public synchronized void add(LouvainTraverser t,
                                     Vertex v, List<Edge> nbs) {
            this.size++;
            this.weight += t.cweightOfVertex(v);
            this.kin += t.kinOfVertex(v);
            this.kout += t.weightOfVertex(v, nbs);
        }

        public synchronized void remove(LouvainTraverser t,
                                        Vertex v, List<Edge> nbs) {
            this.size--;
            this.weight -= t.cweightOfVertex(v);
            this.kin -= t.kinOfVertex(v);
            this.kout -= t.weightOfVertex(v, nbs);
        }

        public synchronized int kin() {
            return this.kin;
        }

        public synchronized float kout() {
            return this.kout;
        }

        @Override
        public boolean equals(Object object) {<FILL_FUNCTION_BODY>}

        @Override
        public String toString() {
            return String.format("[%s](size=%s weight=%s kin=%s kout=%s)",
                                 this.cid, this.size, this.weight,
                                 this.kin, this.kout);
        }
    }

            if (!(object instanceof Community)) {
                return false;
            }
            Community other = (Community) object;
            return Objects.equals(this.cid, other.cid);
        
<methods>public void <init>(UserJob<java.lang.Object>) ,public void close() ,public org.apache.hugegraph.backend.id.Id jobId() ,public void updateProgress(long) <variables>protected final non-sealed java.util.concurrent.ExecutorService executor,private final non-sealed UserJob<java.lang.Object> job,protected long progress