int branch(int[] flags) throws RESyntaxException {
  int node;
  int ret=-1;
  int chain=-1;
  int[] closureFlags=new int[1];
  boolean nullable=true;
  while (idx < len && pattern.charAt(idx) != '|' && pattern.charAt(idx) != ')') {
    closureFlags[0]=NODE_NORMAL;
    node=closure(closureFlags);
    if (closureFlags[0] == NODE_NORMAL) {
      nullable=false;
    }
    if (chain != -1) {
      setNextOfEnd(chain,node);
    }
    chain=node;
    if (ret == -1) {
      ret=node;
    }
  }
  if (ret == -1) {
    ret=node(RE.OP_NOTHING,0);
  }
  if (nullable) {
    flags[0]|=NODE_NULLABLE;
  }
  return ret;
}

int branch ( int [ ] flags ) throws RESyntaxException { int node ; int ret = - 1 ; int chain = - 1 ; int [ ] closureFlags = new int [ 1 ] ; boolean nullable = true ; while ( idx < len && pattern . charAt ( idx ) != '|' && pattern . charAt ( idx ) != ')' ) { closureFlags [ 0 ] = NODE_NORMAL ; node = closure ( closureFlags ) ; if ( closureFlags [ 0 ] == NODE_NORMAL ) { nullable = false ; } if ( chain != - 1 ) { setNextOfEnd ( chain , node ) ; } chain = node ; if ( ret == - 1 ) { ret = node ; } } if ( ret == - 1 ) { ret = node ( RE . OP_NOTHING , 0 ) ; } if ( nullable ) { flags [ 0 ] |= NODE_NULLABLE ; } return ret ; }
compile body of one branch of an or operator ( implements concatenation )
