class UmlState
!!!195842.cpp!!!	write(inout out : FileOut) : void
  anItemKind pkind = parent()->kind();
  bool mach = (pkind != aState) && (pkind != aRegion);
  const char * k;
  
  if (mach) {
    k = (_uml_20) ? "ownedMember" : "packagedElement";
    memo_incoming_trans();
  }
  else
    k = "subvertex";
  
  out.indent(); 
  out << "<" << k << " xmi:type=\"uml:"
    << ((mach || (stereotype() == "machine")) ? "StateMachine" : "State")
    << '"';
  out.id(this); 
  out << " name=\"";
  out.quote(name());
  out << "\">\n";
  out.indent(+1); 
  
  write_description_properties(out); 
     
  while (! _incoming_trans.isEmpty())
    _incoming_trans.take(0)->write_in(out);
  
  const QVector<UmlItem> ch = children(); 
  unsigned n = ch.size();
  unsigned i;
  bool need_region = FALSE;
     
  for (i = 0; i != n; i += 1) {
    if (ch[i]->kind() != aRegion) {
      need_region = TRUE;
      break;
    }
  }

  if (need_region) {
    out.indent();
    out << "<region xmi:type=\"uml:Region\"";
    out.id_prefix(this, "IMPLICIT_REGION_");
    out << " name=\"Bouml_Implicit_Region\">\n";
    out.indent(+1);
    
    for (i = 0; i != n; i += 1)
      if (ch[i]->kind() != aRegion)
	ch[i]->write(out);
    
#if 0
    // to bypass Eclipse's bug
    while (! _trans.isEmpty())
      _trans.take(0)->write_it(out);
#endif
    
    out.indent(-1);
    out.indent();
    out << "</region>\n";
  }

  for (i = 0; i != n; i += 1)
    if (ch[i]->kind() == aRegion)
      ch[i]->write(out);
       
#if 1
    // to bypass Eclipse's bug
    while (! _trans.isEmpty())
      _trans.take(0)->write_it(out);
#endif
    
  out.indent(-1); 
  out.indent(); 
  out << "</" << k << ">\n"; 
    
  unload(); 
!!!198658.cpp!!!	memo_incoming_trans() : void
  const QVector<UmlItem> ch = children(); 
  unsigned n = ch.size();
  unsigned i;
     
  for (i = 0; i != n; i += 1) {
    UmlStateItem * x = dynamic_cast<UmlStateItem *>(ch[i]);

    if (x != 0)
      x->memo_incoming_trans();
  }
!!!196482.cpp!!!	memo_trans(inout tr : UmlTransition) : void
  _trans.append(tr);
!!!196738.cpp!!!	add_incoming_trans(inout tr : UmlTransition) : void
  _incoming_trans.append(tr);
!!!209538.cpp!!!	find(in s : string) : UmlState
  QMap<QCString, UmlState *>::Iterator iter = _all.find(s);
  
  return (iter == _all.end()) ? 0 : *iter;
