code: @Override
      public void setFeature(String featureId, boolean value)
              throws SAXNotRecognizedException, SAXNotSupportedException {
          boolean state;
  
          // Features with a defined value, we just change it if we can.
          state = getFeature(featureId);
  
          if (state == value) {
              return;
          }
          if (parser != null) {
              throw new SAXNotSupportedException("not while parsing");
          }
  
          if ((FEATURE + "namespace-prefixes").equals(featureId)) {
              // in this implementation, this only affects xmlns reporting
              xmlNames = value;
              // forcibly prevent illegal parser state
              if (!xmlNames) {
                  namespaces = true;
              }
              return;
          }
  
          if ((FEATURE + "namespaces").equals(featureId)) {
              namespaces = value;
              // forcibly prevent illegal parser state
              if (!namespaces) {
                  xmlNames = true;
              }
              return;
          }
  
          if ((FEATURE + "external-general-entities").equals(featureId)) {
              extGE = value;
              return;
          }
          if ((FEATURE + "external-parameter-entities").equals(featureId)) {
              extPE = value;
              return;
          }
          if ((FEATURE + "resolve-dtd-uris").equals(featureId)) {
              resolveAll = value;
              return;
          }
  
          if ((FEATURE + "use-entity-resolver2").equals(featureId)) {
              useResolver2 = value;
              return;
          }
  
          if ("http://xml.org/sax/features/unicode-normalization-checking".equals(featureId)) {
              checkNormalization = value;
              return;
          }
  
          throw new SAXNotRecognizedException(featureId);
      }
docs: <b>SAX2</b>: Sets the state of feature flags in this parser. Some
  built-in feature flags are mutable.