@Override
  public void visitBefore(Property p) {
    PropertyWrapper pWrap = new PropertyWrapper(p);
    if (!pWrap.isDataType()
        && !pWrap.isEnumeration()
        && pWrap.isNavigable()
        && !pWrap.isRefined()) {

      OJAnnotatedClass owner = findOJClass(pWrap.getType());
      OJPackage ojPackage = owner.getMyPackage();

      OJAnnotatedClass annotatedClass =
          new OJAnnotatedClass(getClassName(pWrap, "ServerResourceImpl"));

      annotatedClass.setSuperclass(UmlgRestletGenerationUtil.ServerResource);
      annotatedClass.setMyPackage(ojPackage);
      addToSource(annotatedClass);
      addDefaultConstructor(annotatedClass);

      addCompositeParentIdField(pWrap, annotatedClass);
      addGetObjectRepresentation(pWrap, annotatedClass);
      addOptionsObjectRepresentation(pWrap, annotatedClass);

      if (!pWrap.isDerived()) {
        addPostObjectRepresentation(pWrap, annotatedClass);
      }

      addServerResourceToRouterEnum(pWrap, annotatedClass);
    }
  }
  @Override
  public void visitBefore(Model model) {
    OJAnnotatedInterface enumLookupInf =
        new OJAnnotatedInterface(
            UmlgRestletGenerationUtil.EnumerationLookupServerResource.getLast());
    OJPackage ojPackage = new OJPackage(UmlgGenerationUtil.UmlgRootPackage.toJavaString());
    enumLookupInf.setMyPackage(ojPackage);
    addToSource(enumLookupInf);

    OJAnnotatedClass enumLookup =
        new OJAnnotatedClass(
            UmlgRestletGenerationUtil.EnumerationLookupServerResouceImpl.getLast());
    enumLookup.setMyPackage(ojPackage);
    enumLookup.addToImplementedInterfaces(
        UmlgRestletGenerationUtil.EnumerationLookupServerResource);
    enumLookup.setSuperclass(UmlgRestletGenerationUtil.ServerResource);
    addToSource(enumLookup);

    addDefaultConstructor(enumLookup);

    addGetRepresentation(enumLookupInf, enumLookup);

    addToRouterEnum(model, enumLookup, "ENUM_LOOKUP", "\"/tumlEnumLookup\"");
  }