docs: public void processReference(String template, Properties attributes) throws XDocletException
      {
          String                 name   = OjbMemberTagsHandler.getMemberName();
          XClass                 type   = OjbMemberTagsHandler.getMemberType();
          int                    dim    = OjbMemberTagsHandler.getMemberDimension();
          ReferenceDescriptorDef refDef = _curClassDef.getReference(name);
          String                 attrName;
  
          if (refDef == null)
          {
              refDef = new ReferenceDescriptorDef(name);
              _curClassDef.addReference(refDef);
          }
          LogHelper.debug(false, OjbTagsHandler.class, "processReference", "  Processing reference "+refDef.getName());
  
          for (Enumeration attrNames = attributes.propertyNames(); attrNames.hasMoreElements(); )
          {
              attrName = (String)attrNames.nextElement();
              refDef.setProperty(attrName, attributes.getProperty(attrName));
          }
          // storing default info for later use
          if (type == null)
          {
              throw new XDocletException(Translator.getString(XDocletModulesOjbMessages.class,
                                         XDocletModulesOjbMessages.COULD_NOT_DETERMINE_TYPE_OF_MEMBER,
                                         new String[]{name}));
          }
          if (dim > 0)
          {
              throw new XDocletException(Translator.getString(XDocletModulesOjbMessages.class,
                                         XDocletModulesOjbMessages.MEMBER_CANNOT_BE_A_REFERENCE,
                                         new String[]{name, _curClassDef.getName()}));
          }
  
          refDef.setProperty(PropertyHelper.OJB_PROPERTY_VARIABLE_TYPE, type.getQualifiedName());
  
          // searching for default type
          String typeName = searchForPersistentSubType(type);
  
          if (typeName != null)
          {
              refDef.setProperty(PropertyHelper.OJB_PROPERTY_DEFAULT_CLASS_REF, typeName);
          }
  
          _curReferenceDef = refDef;
          generate(template);
          _curReferenceDef = null;
      }