@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);
    }
  }