private void fillFieldContent(Object object, Map<String, Object> properties, Class<?> clazz) {

    if (clazz != AbstractGatewayPacket.class && clazz != Object.class && clazz != null) {
      Field[] fields = clazz.getDeclaredFields();
      for (int i = 0; i < fields.length; i++) {
        String name = fields[i].getName();
        if ((fields[i].getModifiers() & Modifier.STATIC) == 0
            && (fields[i].getModifiers() & Modifier.PUBLIC) != 0) {
          Object value = properties.get(name);

          if (value != null) {
            try {
              if (ParameterMapping.isPrimitiveType(fields[i].getType())) {
                value = ParameterMapping.deStringize(fields[i].getType(), (String) value);
                fields[i].setAccessible(true);
                fields[i].set(object, value);
              } else {
              }
            } catch (Exception e) {
              e.printStackTrace();
            }
          }
        }
      }
      fillFieldContent(object, properties, clazz.getSuperclass());
    }
  }