code: public void and(CClassNode other, ScanEnvironment env) {
          boolean not1 = isNot();
          BitSet bsr1 = bs;
          CodeRangeBuffer buf1 = mbuf;
          boolean not2 = other.isNot();
          BitSet bsr2 = other.bs;
          CodeRangeBuffer buf2 = other.mbuf;
  
          if (not1) {
              BitSet bs1 = new BitSet();
              bsr1.invertTo(bs1);
              bsr1 = bs1;
          }
  
          if (not2) {
              BitSet bs2 = new BitSet();
              bsr2.invertTo(bs2);
              bsr2 = bs2;
          }
  
          bsr1.and(bsr2);
  
          if (bsr1 != bs) {
              bs.copy(bsr1);
              bsr1 = bs;
          }
  
          if (not1) {
              bs.invert();
          }
  
          CodeRangeBuffer pbuf = null;
  
          if (!env.enc.isSingleByte()) {
              if (not1 && not2) {
                  pbuf = CodeRangeBuffer.orCodeRangeBuff(env, buf1, false, buf2, false);
              } else {
                  pbuf = CodeRangeBuffer.andCodeRangeBuff(buf1, not1, buf2, not2, env);
  
                  if (not1) {
                      pbuf = CodeRangeBuffer.notCodeRangeBuff(env, pbuf);
                  }
              }
              mbuf = pbuf;
          }
  
      }
docs: and_cclass