docs: public void setCacheMode(CacheMode cacheMode)
      {
          if(cacheMode == null)
          {
              fullCache = null;
              partialCache = null;
              availableRow = null;
              return;
          }
          this.cacheMode = cacheMode;
  
          if(vecs != null)
              accelCache = kernel.getAccelerationCache(vecs);
          evalCount = 0;
          cacheEvictions = 0;
  
          final int N = vecs == null ? 0 : vecs.size();
  
          if(cacheMode == CacheMode.FULL && vecs != null)
          {
              fullCache = new double[N][];
              for(int i = 0; i < N; i++)
              {
                  fullCache[i] = new double[N-i];
                  Arrays.fill(fullCache[i], Double.NaN);
              }
  
              //Switched to lazy init, hence NaN above
  //            for(int i = 0; i < N; i++)
  //                for(int j = i; j < N; j++)
  //                    fullCache[i][j-i] = k(i, j);
          }
          else if(cacheMode == CacheMode.ROWS && vecs != null)
          {
              partialCache = new ConcurrentCacheLRU<Integer, double[]>(cacheConst);
          }
          else if(cacheMode == CacheMode.NONE)
              fullCache = null;
      }