code: private void addAdjustVersionProperty(CodeBuilder b,
                                            LocalVariable storableVar,
                                            int value)
          throws SupportException
      {
          // Push storable to stack in preparation for calling set method below.
          if (storableVar == null) {
              b.loadThis();
          } else {
              b.loadLocal(storableVar);
          }
  
          StorableProperty<?> versionProperty = mInfo.getVersionProperty();
          TypeDesc versionType = TypeDesc.forClass(versionProperty.getType());
  
          if (value >= 0) {
              CodeBuilderUtil.initialVersion(b, versionType, value);
          } else {
              // Load current property value.
              b.dup();
              b.invoke(versionProperty.getReadMethod());
              CodeBuilderUtil.incrementVersion(b, versionType);
          }
  
          b.invoke(versionProperty.getWriteMethod());
      }
docs: /*
  Generates code to adjust the version property. If value parameter is negative, then
  version is incremented as follows:
  
  storable.setVersionNumber(storable.getVersionNumber() + 1);
  
  Otherwise, the version is set:
  
  storable.setVersionNumber(value);
  
  @param storableVar references storable instance, or null if this
  @param value if negative, increment version, else, set version to this value