code: private static final int getPrecacheSize() {
          String prop = null;
          long propParsed;
  
          try {
              prop = System.getProperty(PRECACHE_PROPERTY);
          }
          catch (SecurityException e) {
              // security manager stopped us so use default
              // FIXME: should we log this somewhere?
              return DEFAULT_PRECACHE_SIZE;
          }
          if (prop == null)
              return DEFAULT_PRECACHE_SIZE;
  
          // empty value
          // FIXME: should we log this somewhere?
          if (prop.length() <= 0)
              return DEFAULT_PRECACHE_SIZE;
  
          try {
              propParsed = Long.parseLong(prop);
          }
          catch (NumberFormatException e) {
              // not a valid number
              // FIXME: should we log this somewhere?
              return DEFAULT_PRECACHE_SIZE;
          }
  
          // treat negative value as no cache...
          if (propParsed < 0)
              return 0;
  
          // FIXME: should we log this somewhere?
          if (propParsed > Integer.MAX_VALUE)
              return Integer.MAX_VALUE;
  
          return (int) propParsed;
      }
docs: Figure out the size of the precache.
  
  @return The parsed value of the system property
  {@link #PRECACHE_PROPERTY} or {@link #DEFAULT_PRECACHE_SIZE} if
  the property is not set, not a number or retrieving results in a
  {@link SecurityException}. If the parsed value is zero or
  negative no cache will be created. If the value is larger than
  {@link Integer#MAX_VALUE} then Integer#MAX_VALUE will be used.