code: /* this file is generated by RelaxNGCC */
  package com.sun.xml.xsom.impl.parser.state;
  import org.xml.sax.SAXException;
  import org.xml.sax.XMLReader;
  import org.xml.sax.Attributes;
  import com.sun.xml.xsom.impl.parser.NGCCRuntimeEx;
  
      import com.sun.xml.xsom.*;
      import com.sun.xml.xsom.parser.*;
      import com.sun.xml.xsom.impl.*;
      import com.sun.xml.xsom.impl.parser.*;
      import org.xml.sax.Locator;
      import org.xml.sax.ContentHandler;
      import org.xml.sax.helpers.*;
      import java.util.*;
    
  
  
  class redefine extends NGCCHandler {
      private String schemaLocation;
      private ModelGroupDeclImpl newGrp;
      private AttGroupDeclImpl newAg;
      private SimpleTypeImpl newSt;
      private ComplexTypeImpl newCt;
      protected final NGCCRuntimeEx $runtime;
      private int $_ngcc_current_state;
      protected String $uri;
      protected String $localName;
      protected String $qname;
  
      public final NGCCRuntime getRuntime() {
          return($runtime);
      }
  
      public redefine(NGCCHandler parent, NGCCEventSource source, NGCCRuntimeEx runtime, int cookie) {
          super(source, parent, cookie);
          $runtime = runtime;
          $_ngcc_current_state = 15;
      }
  
      public redefine(NGCCRuntimeEx runtime) {
          this(null, runtime, runtime, -1);
      }
  
      private void action0()throws SAXException {
          XSAttGroupDecl oldAg = $runtime.currentSchema.getAttGroupDecl(newAg.getName());
              if(oldAg==null) {
                $runtime.reportError( Messages.format(Messages.ERR_UNDEFINED_ATTRIBUTEGROUP,newAg.getName()) );
              } else {
                newAg.redefine((AttGroupDeclImpl)oldAg);
                $runtime.currentSchema.addAttGroupDecl(newAg,true);
              }
  }
  
      private void action1()throws SAXException {
          XSModelGroupDecl oldGrp = $runtime.currentSchema.getModelGroupDecl(newGrp.getName());
              if(oldGrp==null) {
                $runtime.reportError( Messages.format(Messages.ERR_UNDEFINED_MODELGROUP,newGrp.getName()) );
              } else {
                newGrp.redefine((ModelGroupDeclImpl)oldGrp);
                $runtime.currentSchema.addModelGroupDecl(newGrp,true);
              }
  }
  
      private void action2()throws SAXException {
          XSComplexType oldCt = $runtime.currentSchema.getComplexType(newCt.getName());
              if(oldCt==null) {
                $runtime.reportError( Messages.format(Messages.ERR_UNDEFINED_COMPLEXTYPE,newCt.getName()) );
              } else {
                newCt.redefine((ComplexTypeImpl)oldCt);
                $runtime.currentSchema.addComplexType(newCt,true);
              }
  }
  
      private void action3()throws SAXException {
          XSSimpleType oldSt = $runtime.currentSchema.getSimpleType(newSt.getName());
              if(oldSt==null) {
                $runtime.reportError( Messages.format(Messages.ERR_UNDEFINED_SIMPLETYPE,newSt.getName()) );
              } else {
                newSt.redefine((SimpleTypeImpl)oldSt);
                $runtime.currentSchema.addSimpleType(newSt,true);
              }
  }
  
      private void action4()throws SAXException {
          $runtime.includeSchema( schemaLocation );
  }
  
      public void enterElement(String $__uri, String $__local, String $__qname, Attributes $attrs) throws SAXException {
          int $ai;
          $uri = $__uri;
          $localName = $__local;
          $qname = $__qname;
          switch($_ngcc_current_state) {
          case 15:
              {
                  if(($__uri.equals("http://www.w3.org/2001/XMLSchema") && $__local.equals("redefine"))) {
                      $runtime.onEnterElementConsumed($__uri, $__local, $__qname, $attrs);
                      $_ngcc_current_state = 14;
                  }
                  else {
                      unexpectedEnterElement($__qname);
                  }
              }
              break;
          case 14:
              {
                  if(($ai = $runtime.getAttributeIndex("","schemaLocation"))>=0) {
                      $runtime.consumeAttribute($ai);
                      $runtime.sendEnterElement(super._cookie, $__uri, $__local, $__qname, $attrs);
                  }
                  else {
                      unexpectedEnterElement($__qname);
                  }
              }
              break;
          case 0:
              {
                  revertToParentFromEnterElement(this, super._cookie, $__uri, $__local, $__qname, $attrs);
              }
              break;
          case 1:
              {
                  if(($__uri.equals("http://www.w3.org/2001/XMLSchema") && $__local.equals("annotation"))) {
                      NGCCHandler h = new annotation(this, super._source, $runtime, 209, null,AnnotationContext.SCHEMA);
                      spawnChildFromEnterElement(h, $__uri, $__local, $__qname, $attrs);
                  }
                  else {
                      if(($__uri.equals("http://www.w3.org/2001/XMLSchema") && $__local.equals("simpleType"))) {
                          NGCCHandler h = new simpleType(this, super._source, $runtime, 210);
                          spawnChildFromEnterElement(h, $__uri, $__local, $__qname, $attrs);
                      }
                      else {
                          if(($__uri.equals("http://www.w3.org/2001/XMLSchema") && $__local.equals("complexType"))) {
                              NGCCHandler h = new complexType(this, super._source, $runtime, 211);
                              spawnChildFromEnterElement(h, $__uri, $__local, $__qname, $attrs);
                          }
                          else {
                              if(($__uri.equals("http://www.w3.org/2001/XMLSchema") && $__local.equals("group"))) {
                                  NGCCHandler h = new group(this, super._source, $runtime, 212);
                                  spawnChildFromEnterElement(h, $__uri, $__local, $__qname, $attrs);
                              }
                              else {
                                  if(($__uri.equals("http://www.w3.org/2001/XMLSchema") && $__local.equals("attributeGroup"))) {
                                      NGCCHandler h = new attributeGroupDecl(this, super._source, $runtime, 213);
                                      spawnChildFromEnterElement(h, $__uri, $__local, $__qname, $attrs);
                                  }
                                  else {
                                      unexpectedEnterElement($__qname);
                                  }
                              }
                          }
                      }
                  }
              }
              break;
          case 2:
              {
                  if(($__uri.equals("http://www.w3.org/2001/XMLSchema") && $__local.equals("annotation"))) {
                      NGCCHandler h = new annotation(this, super._source, $runtime, 214, null,AnnotationContext.SCHEMA);
                      spawnChildFromEnterElement(h, $__uri, $__local, $__qname, $attrs);
                  }
                  else {
                      if(($__uri.equals("http://www.w3.org/2001/XMLSchema") && $__local.equals("simpleType"))) {
                          NGCCHandler h = new simpleType(this, super._source, $runtime, 215);
                          spawnChildFromEnterElement(h, $__uri, $__local, $__qname, $attrs);
                      }
                      else {
                          if(($__uri.equals("http://www.w3.org/2001/XMLSchema") && $__local.equals("complexType"))) {
                              NGCCHandler h = new complexType(this, super._source, $runtime, 216);
                              spawnChildFromEnterElement(h, $__uri, $__local, $__qname, $attrs);
                          }
                          else {
                              if(($__uri.equals("http://www.w3.org/2001/XMLSchema") && $__local.equals("group"))) {
                                  NGCCHandler h = new group(this, super._source, $runtime, 217);
                                  spawnChildFromEnterElement(h, $__uri, $__local, $__qname, $attrs);
                              }
                              else {
                                  if(($__uri.equals("http://www.w3.org/2001/XMLSchema") && $__local.equals("attributeGroup"))) {
                                      NGCCHandler h = new attributeGroupDecl(this, super._source, $runtime, 218);
                                      spawnChildFromEnterElement(h, $__uri, $__local, $__qname, $attrs);
                                  }
                                  else {
                                      $_ngcc_current_state = 1;
                                      $runtime.sendEnterElement(super._cookie, $__uri, $__local, $__qname, $attrs);
                                  }
                              }
                          }
                      }
                  }
              }
              break;
          default:
              {
                  unexpectedEnterElement($__qname);
              }
              break;
          }
      }
  
      public void leaveElement(String $__uri, String $__local, String $__qname) throws SAXException {
          int $ai;
          $uri = $__uri;
          $localName = $__local;
          $qname = $__qname;
          switch($_ngcc_current_state) {
          case 14:
              {
                  if(($ai = $runtime.getAttributeIndex("","schemaLocation"))>=0) {
                      $runtime.consumeAttribute($ai);
                      $runtime.sendLeaveElement(super._cookie, $__uri, $__local, $__qname);
                  }
                  else {
                      unexpectedLeaveElement($__qname);
                  }
              }
              break;
          case 0:
              {
                  revertToParentFromLeaveElement(this, super._cookie, $__uri, $__local, $__qname);
              }
              break;
          case 1:
              {
                  if(($__uri.equals("http://www.w3.org/2001/XMLSchema") && $__local.equals("redefine"))) {
                      $runtime.onLeaveElementConsumed($__uri, $__local, $__qname);
                      $_ngcc_current_state = 0;
                  }
                  else {
                      unexpectedLeaveElement($__qname);
                  }
              }
              break;
          case 2:
              {
                  $_ngcc_current_state = 1;
                  $runtime.sendLeaveElement(super._cookie, $__uri, $__local, $__qname);
              }
              break;
          default:
              {
                  unexpectedLeaveElement($__qname);
              }
              break;
          }
      }
  
      public void enterAttribute(String $__uri, String $__local, String $__qname) throws SAXException {
          int $ai;
          $uri = $__uri;
          $localName = $__local;
          $qname = $__qname;
          switch($_ngcc_current_state) {
          case 14:
              {
                  if(($__uri.equals("") && $__local.equals("schemaLocation"))) {
                      $_ngcc_current_state = 13;
                  }
                  else {
                      unexpectedEnterAttribute($__qname);
                  }
              }
              break;
          case 0:
              {
                  revertToParentFromEnterAttribute(this, super._cookie, $__uri, $__local, $__qname);
              }
              break;
          case 2:
              {
                  $_ngcc_current_state = 1;
                  $runtime.sendEnterAttribute(super._cookie, $__uri, $__local, $__qname);
              }
              break;
          default:
              {
                  unexpectedEnterAttribute($__qname);
              }
              break;
          }
      }
  
      public void leaveAttribute(String $__uri, String $__local, String $__qname) throws SAXException {
          int $ai;
          $uri = $__uri;
          $localName = $__local;
          $qname = $__qname;
          switch($_ngcc_current_state) {
          case 0:
              {
                  revertToParentFromLeaveAttribute(this, super._cookie, $__uri, $__local, $__qname);
              }
              break;
          case 12:
              {
                  if(($__uri.equals("") && $__local.equals("schemaLocation"))) {
                      $_ngcc_current_state = 2;
                  }
                  else {
                      unexpectedLeaveAttribute($__qname);
                  }
              }
              break;
          case 2:
              {
                  $_ngcc_current_state = 1;
                  $runtime.sendLeaveAttribute(super._cookie, $__uri, $__local, $__qname);
              }
              break;
          default:
              {
                  unexpectedLeaveAttribute($__qname);
              }
              break;
          }
      }
  
      public void text(String $value) throws SAXException {
          int $ai;
          switch($_ngcc_current_state) {
          case 14:
              {
                  if(($ai = $runtime.getAttributeIndex("","schemaLocation"))>=0) {
                      $runtime.consumeAttribute($ai);
                      $runtime.sendText(super._cookie, $value);
                  }
              }
              break;
          case 0:
              {
                  revertToParentFromText(this, super._cookie, $value);
              }
              break;
          case 13:
              {
                  schemaLocation = $value;
                  $_ngcc_current_state = 12;
                  action4();
              }
              break;
          case 2:
              {
                  $_ngcc_current_state = 1;
                  $runtime.sendText(super._cookie, $value);
              }
              break;
          }
      }
  
      public void onChildCompleted(Object $__result__, int $__cookie__, boolean $__needAttCheck__)throws SAXException {
          switch($__cookie__) {
          case 214:
              {
                  $_ngcc_current_state = 1;
              }
              break;
          case 215:
              {
                  newSt = ((SimpleTypeImpl)$__result__);
                  action3();
                  $_ngcc_current_state = 1;
              }
              break;
          case 216:
              {
                  newCt = ((ComplexTypeImpl)$__result__);
                  action2();
                  $_ngcc_current_state = 1;
              }
              break;
          case 217:
              {
                  newGrp = ((ModelGroupDeclImpl)$__result__);
                  action1();
                  $_ngcc_current_state = 1;
              }
              break;
          case 218:
              {
                  newAg = ((AttGroupDeclImpl)$__result__);
                  action0();
                  $_ngcc_current_state = 1;
              }
              break;
          case 209:
              {
                  $_ngcc_current_state = 1;
              }
              break;
          case 210:
              {
                  newSt = ((SimpleTypeImpl)$__result__);
                  action3();
                  $_ngcc_current_state = 1;
              }
              break;
          case 211:
              {
                  newCt = ((ComplexTypeImpl)$__result__);
                  action2();
                  $_ngcc_current_state = 1;
              }
              break;
          case 212:
              {
                  newGrp = ((ModelGroupDeclImpl)$__result__);
                  action1();
                  $_ngcc_current_state = 1;
              }
              break;
          case 213:
              {
                  newAg = ((AttGroupDeclImpl)$__result__);
                  action0();
                  $_ngcc_current_state = 1;
              }
              break;
          }
      }
  
      public boolean accepted() {
          return(($_ngcc_current_state == 0));
      }
  
  
  }
  
  