public void visit(SqlObjectType sqlObjectType) {
   String targetTypeName = null;
   if (sqlObjectType.hasConversion()) {
     targetTypeName = sqlObjectType.getTargetTypeName();
   }
   int numAttributes = 0;
   List<AttributeField> fields = null;
   try {
     fields = sqlObjectType.getDeclaredFields(false);
     numAttributes = fields.size();
   } catch (Exception e) {
   }
   listener.beginObjectType(sqlObjectType.getName());
   listener.handleObjectType(sqlObjectType.getName(), targetTypeName, numAttributes);
   if (fields != null && numAttributes > 0) {
     for (int idx = 0; idx < numAttributes; idx++) {
       AttributeField field = fields.get(idx);
       TypeClass typeClass = field.getType();
       listener.handleAttributeField(field.getName(), idx);
       ((SqlType) typeClass).accept(this);
     }
   }
   try {
     listener.endObjectType(sqlObjectType.getName());
   } catch (Exception e) {
     /* ignore */
   }
 }