docs: public synchronized boolean checkAddVolume(int type, int vol) {
          final String methodName = "checkAddVolume()";
          if (this.diskCacheSizeInGBLimit > 0) {
              boolean bCalculateHighAndLow = false;
              int minGB = 0;
              switch (type) {
                  case TYPE_CACHE_DATA:
                      if (this.currentDataGB >= (vol + 1)) {
                          return true;
                      }
                      if (this.allowOverflow) {
                          traceDebug(methodName, "cacheName=" + this.cacheName + " allow overflow for data file vol=" + vol);
                          return true;
                      }
                      minGB = this.currentDataGB + this.currentDependencyIdGB + this.currentTemplateGB + 1;
                      if (this.diskCacheSizeInGBLimit >= minGB) {
                          this.currentDataGB++;
                      } else {
                          traceDebug(methodName, "data over limit cacheName=" + this.cacheName + " add type=" + type + " diskCacheSizeInGBLimit=" + this.diskCacheSizeInGBLimit + " currentDataGB=" + this.currentDataGB + " currentDependencyIdGB=" + this.currentDependencyIdGB + " currentTemplateGB=" + this.currentTemplateGB); 
                          return false;
                      }
                      break;
                  case TYPE_DEPENDENCY_ID_DATA:
                      if (this.currentDependencyIdGB >= (vol + 1)) {
                          return true;
                      }
                      if (this.allowOverflow) {
                          traceDebug(methodName, "cacheName=" + this.cacheName + " allow overflow for dependency file id vol=" + vol);
                          return true;
                      }
                      minGB = this.currentDataGB + this.currentDependencyIdGB + this.currentTemplateGB + 1;
                      if (this.diskCacheSizeInGBLimit >= minGB) {
                          this.currentDependencyIdGB++;
                          bCalculateHighAndLow = true;
                      } else {
                          traceDebug(methodName, "depId over limit cacheName=" + this.cacheName + " add type=" + type + " diskCacheSizeInGBLimit=" + this.diskCacheSizeInGBLimit + " currentDataGB=" + this.currentDataGB + " currentDependencyIdGB=" + this.currentDependencyIdGB + " currentTemplateGB=" + this.currentTemplateGB); 
                          return false;
                      }
                      break;
                  case TYPE_TEMPLATE_DATA:
                      if (this.currentTemplateGB >= (vol + 1)) {
                          return true;
                      }
                      if (this.allowOverflow) {
                          traceDebug(methodName, "cacheName=" + this.cacheName + " allow overflow for template file vol=" + vol);
                          return true;
                      }
                      minGB = this.currentDataGB + this.currentDependencyIdGB + this.currentTemplateGB + 1;
                      if (this.diskCacheSizeInGBLimit >= minGB) {
                          this.currentTemplateGB++;
                          bCalculateHighAndLow = true;
                      } else {
                          traceDebug(methodName, "template over limit cacheName=" + this.cacheName + " add type=" + type + " diskCacheSizeInGBLimit=" + this.diskCacheSizeInGBLimit + " currentDataGB=" + this.currentDataGB + " currentDependencyIdGB=" + this.currentDependencyIdGB + " currentTemplateGB=" + this.currentTemplateGB); 
                          return false;
                      }
                      break;
              }
              if (bCalculateHighAndLow) {
                  this.diskCacheSizeInBytesLimit = (diskCacheSizeInGBLimit - this.currentDependencyIdGB - this.currentTemplateGB) * GB_SIZE;
                  this.diskCacheSizeInBytesHighLimit = (this.diskCacheSizeInBytesLimit * (long)this.highThreshold) / 100l;
                  this.diskCacheSizeInBytesLowLimit  = (this.diskCacheSizeInBytesLimit * (long)this.lowThreshold)  / 100l;
                  traceDebug(methodName, "new limit: cacheName=" + this.cacheName + " add type=" + type + " diskCacheSizeInBytesLimit=" + this.diskCacheSizeInBytesLimit + " diskCacheSizeInBytesHighLimit=" + this.diskCacheSizeInBytesHighLimit + " diskCacheSizeInBytesLowLimit=" + this.diskCacheSizeInBytesLowLimit);
              }
              traceDebug(methodName, "cacheName=" + this.cacheName + " add volume=" + vol + " type=" + type + " currentDataGB=" + this.currentDataGB + " currentDependencyIdGB=" + this.currentDependencyIdGB + " currentTemplateGB=" + this.currentTemplateGB);
          }
          return true;
      }