docs: private void checkProcedures(ClassDescriptorDef classDef, String checkLevel) throws ConstraintException
      {
          if (CHECKLEVEL_NONE.equals(checkLevel))
          {
              return;
          }
  
          ProcedureDef procDef;
          String       type;
          String       name;
          String       fieldName;
          String       argName;
          
          for (Iterator it = classDef.getProcedures(); it.hasNext();)
          {
              procDef = (ProcedureDef)it.next();
              type    = procDef.getName();
              name    = procDef.getProperty(PropertyHelper.OJB_PROPERTY_NAME);
              if ((name == null) || (name.length() == 0))
              {
                  throw new ConstraintException("The "+type+"-procedure in class "+classDef.getName()+" doesn't have a name");
              }
              fieldName = procDef.getProperty(PropertyHelper.OJB_PROPERTY_RETURN_FIELD_REF);
              if ((fieldName != null) && (fieldName.length() > 0))
              {
                  if (classDef.getField(fieldName) == null)
                  {
                      throw new ConstraintException("The "+type+"-procedure "+name+" in class "+classDef.getName()+" references an unknown or non-persistent return field "+fieldName);
                  }
              }
              for (CommaListIterator argIt = new CommaListIterator(procDef.getProperty(PropertyHelper.OJB_PROPERTY_ARGUMENTS)); argIt.hasNext();)
              {
                  argName = argIt.getNext();
                  if (classDef.getProcedureArgument(argName) == null)
                  {
                      throw new ConstraintException("The "+type+"-procedure "+name+" in class "+classDef.getName()+" references an unknown argument "+argName);
                  }
              }
          }
  
          ProcedureArgumentDef argDef;
  
          for (Iterator it = classDef.getProcedureArguments(); it.hasNext();)
          {
              argDef = (ProcedureArgumentDef)it.next();
              type   = argDef.getProperty(PropertyHelper.OJB_PROPERTY_TYPE);
              if ("runtime".equals(type))
              {
                  fieldName = argDef.getProperty(PropertyHelper.OJB_PROPERTY_FIELD_REF);
                  if ((fieldName != null) && (fieldName.length() > 0))
                  {
                      if (classDef.getField(fieldName) == null)
                      {
                          throw new ConstraintException("The "+type+"-argument "+argDef.getName()+" in class "+classDef.getName()+" references an unknown or non-persistent return field "+fieldName);
                      }
                  }
              }
          }
      }