code: public SServiceType createSServiceType(SClass sClass, boolean recurse) throws UserException, ServerException {
  		if (sClass == null) {
  			return null;
  		}
  		SServiceType sServiceType = new SServiceType();
  		sServiceType.setName(sClass.getName());
  		sServiceType.setSimpleName(sClass.getSimpleName());
  		sServiceType.setSimpleType(SServiceSimpleType.valueOf(sClass.getSimpleType().name()));
  		for (SField field : sClass.getOwnFields()) {
  			SServiceField sServiceField = new SServiceField();
  			sServiceField.setName(field.getName());
  			if (recurse) {
  				sServiceField.setType(createSServiceType(field.getType(), recurse));
  				sServiceField.setGenericType(createSServiceType(field.getGenericType(), recurse));
  			}
  			sServiceField.setDoc(field.getDoc());
  			sServiceType.getFields().add(sServiceField);
  		}
  		return sServiceType;
  	}
docs: TODO Recursion to same type will result in endless loop