private synchronized ContentModelValidator createChildModel(int contentSpecIndex){
  XMLContentSpec contentSpec=new XMLContentSpec();
  getContentSpec(contentSpecIndex,contentSpec);
  if ((contentSpec.type & 0x0f) == XMLContentSpec.CONTENTSPECNODE_ANY || (contentSpec.type & 0x0f) == XMLContentSpec.CONTENTSPECNODE_ANY_OTHER || (contentSpec.type & 0x0f) == XMLContentSpec.CONTENTSPECNODE_ANY_LOCAL) {
  }
 else   if (contentSpec.type == XMLContentSpec.CONTENTSPECNODE_LEAF) {
    if (contentSpec.value == null && contentSpec.otherValue == null)     throw new RuntimeException("ImplementationMessages.VAL_NPCD");
    fQName.setValues(null,(String)contentSpec.value,(String)contentSpec.value,(String)contentSpec.otherValue);
    return new SimpleContentModel(contentSpec.type,fQName,null);
  }
 else   if ((contentSpec.type == XMLContentSpec.CONTENTSPECNODE_CHOICE) || (contentSpec.type == XMLContentSpec.CONTENTSPECNODE_SEQ)) {
    XMLContentSpec contentSpecLeft=new XMLContentSpec();
    XMLContentSpec contentSpecRight=new XMLContentSpec();
    getContentSpec(((int[])contentSpec.value)[0],contentSpecLeft);
    getContentSpec(((int[])contentSpec.otherValue)[0],contentSpecRight);
    if ((contentSpecLeft.type == XMLContentSpec.CONTENTSPECNODE_LEAF) && (contentSpecRight.type == XMLContentSpec.CONTENTSPECNODE_LEAF)) {
      fQName.setValues(null,(String)contentSpecLeft.value,(String)contentSpecLeft.value,(String)contentSpecLeft.otherValue);
      fQName2.setValues(null,(String)contentSpecRight.value,(String)contentSpecRight.value,(String)contentSpecRight.otherValue);
      return new SimpleContentModel(contentSpec.type,fQName,fQName2);
    }
  }
 else   if ((contentSpec.type == XMLContentSpec.CONTENTSPECNODE_ZERO_OR_ONE) || (contentSpec.type == XMLContentSpec.CONTENTSPECNODE_ZERO_OR_MORE) || (contentSpec.type == XMLContentSpec.CONTENTSPECNODE_ONE_OR_MORE)) {
    XMLContentSpec contentSpecLeft=new XMLContentSpec();
    getContentSpec(((int[])contentSpec.value)[0],contentSpecLeft);
    if (contentSpecLeft.type == XMLContentSpec.CONTENTSPECNODE_LEAF) {
      fQName.setValues(null,(String)contentSpecLeft.value,(String)contentSpecLeft.value,(String)contentSpecLeft.otherValue);
      return new SimpleContentModel(contentSpec.type,fQName,null);
    }
  }
 else {
    throw new RuntimeException("ImplementationMessages.VAL_CST");
  }
  fLeafCount=0;
  fLeafCount=0;
  CMNode cmn=buildSyntaxTree(contentSpecIndex,contentSpec);
  return new DFAContentModel(cmn,fLeafCount,false);
}

private synchronized ContentModelValidator createChildModel ( int contentSpecIndex ) { XMLContentSpec contentSpec = new XMLContentSpec ( ) ; getContentSpec ( contentSpecIndex , contentSpec ) ; if ( ( contentSpec . type & 0x0f ) == XMLContentSpec . CONTENTSPECNODE_ANY || ( contentSpec . type & 0x0f ) == XMLContentSpec . CONTENTSPECNODE_ANY_OTHER || ( contentSpec . type & 0x0f ) == XMLContentSpec . CONTENTSPECNODE_ANY_LOCAL ) { } else if ( contentSpec . type == XMLContentSpec . CONTENTSPECNODE_LEAF ) { if ( contentSpec . value == null && contentSpec . otherValue == null ) throw new RuntimeException ( "ImplementationMessages.VAL_NPCD" ) ; fQName . setValues ( null , ( String ) contentSpec . value , ( String ) contentSpec . value , ( String ) contentSpec . otherValue ) ; return new SimpleContentModel ( contentSpec . type , fQName , null ) ; } else if ( ( contentSpec . type == XMLContentSpec . CONTENTSPECNODE_CHOICE ) || ( contentSpec . type == XMLContentSpec . CONTENTSPECNODE_SEQ ) ) { XMLContentSpec contentSpecLeft = new XMLContentSpec ( ) ; XMLContentSpec contentSpecRight = new XMLContentSpec ( ) ; getContentSpec ( ( ( int [ ] ) contentSpec . value ) [ 0 ] , contentSpecLeft ) ; getContentSpec ( ( ( int [ ] ) contentSpec . otherValue ) [ 0 ] , contentSpecRight ) ; if ( ( contentSpecLeft . type == XMLContentSpec . CONTENTSPECNODE_LEAF ) && ( contentSpecRight . type == XMLContentSpec . CONTENTSPECNODE_LEAF ) ) { fQName . setValues ( null , ( String ) contentSpecLeft . value , ( String ) contentSpecLeft . value , ( String ) contentSpecLeft . otherValue ) ; fQName2 . setValues ( null , ( String ) contentSpecRight . value , ( String ) contentSpecRight . value , ( String ) contentSpecRight . otherValue ) ; return new SimpleContentModel ( contentSpec . type , fQName , fQName2 ) ; } } else if ( ( contentSpec . type == XMLContentSpec . CONTENTSPECNODE_ZERO_OR_ONE ) || ( contentSpec . type == XMLContentSpec . CONTENTSPECNODE_ZERO_OR_MORE ) || ( contentSpec . type == XMLContentSpec . CONTENTSPECNODE_ONE_OR_MORE ) ) { XMLContentSpec contentSpecLeft = new XMLContentSpec ( ) ; getContentSpec ( ( ( int [ ] ) contentSpec . value ) [ 0 ] , contentSpecLeft ) ; if ( contentSpecLeft . type == XMLContentSpec . CONTENTSPECNODE_LEAF ) { fQName . setValues ( null , ( String ) contentSpecLeft . value , ( String ) contentSpecLeft . value , ( String ) contentSpecLeft . otherValue ) ; return new SimpleContentModel ( contentSpec . type , fQName , null ) ; } } else { throw new RuntimeException ( "ImplementationMessages.VAL_CST" ) ; } fLeafCount = 0 ; fLeafCount = 0 ; CMNode cmn = buildSyntaxTree ( contentSpecIndex , contentSpec ) ; return new DFAContentModel ( cmn , fLeafCount , false ) ; }
when the element has a ' children ' model , this method is called to create the content model object . it looks for some special case simple models and creates simplecontentmodel objects for those . for the rest it creates the standard dfa style model .
