code: private Class<?> getClassImpl(final String name) throws UtilEvalError {
          Class<?> c = null;
          // Check the cache
          if (this.classCache.containsKey(name))
              return this.classCache.get(name);
          // Unqualified (simple, non-compound) name
          final boolean unqualifiedName = !Name.isCompound(name);
          // Unqualified name check imported
          if (unqualifiedName) {
              c = this.getImportedClassImpl(name);
              // if found as imported also cache it
              if (c == null)
                  c = this.classForName(name);
              if (c != null) {
                  this.cacheClass(name, c);
                  return c;
              }
          }
          // Try absolute
          c = this.classForName(name);
          if (c != null)
              return c;
          // Not found
          Interpreter.debug("getClass(): ", name, " not found in ", this);
          return null;
      }
docs: Implementation of getClass() Load a class through this namespace taking
  into account imports.
  <p>
  Check the cache first. If an unqualified name look for imported class or
  package. Else try to load absolute name.
  <p>
  This method implements caching of unqualified names (normally imports).
  Qualified names are cached by the BshClassManager. Unqualified absolute
  class names (e.g. unpackaged Foo) are cached too so that we don't go
  searching through the imports for them each time.
  @param name the name
  @return null if not found.
  @throws UtilEvalError the util eval error