docs: @Override
      public Object lookup(Name inName) throws NamingException {
          NameUtil nameUtil = new NameUtil(inName);
  
          Object toReturn = null;
  
          //if there wasn't a name to lookup return a Context
          if (nameUtil.getStringNameWithoutPrefix().equals(""))
              return new JavaURLContext(nameUtil.getName(), this);
  
          // loop through the helper services looking for a non-null result
          for (Iterator<JavaColonNamingHelper> it = helperServices.getServices(); it.hasNext();) {
              JavaColonNamingHelper helperService = it.next();
              toReturn = helperService.getObjectInstance(nameUtil.getNamespace(), nameUtil.getNameInContext());
              if (toReturn != null) {
                  break;
              }
          }
  
          if (toReturn != null) {
              // return the resource asked for
              return toReturn;
          }
  
          boolean hasPrefix = false;
          // loop through the helper services to know whether any object instance's name
          // is prefixed with the name specified
          for (Iterator<JavaColonNamingHelper> it = helperServices.getServices(); it.hasNext();) {
              JavaColonNamingHelper helperService = it.next();
              hasPrefix = helperService.hasObjectWithPrefix(nameUtil.getNamespace(), nameUtil.getNameInContext());
              if (hasPrefix) {
                  break;
              }
          }
  
          if (!hasPrefix) {
              throw new NameNotFoundException(NameNotFoundException.class.getName() + ": " + nameUtil.getName().toString());
          }
  
          return new JavaURLContext(nameUtil.getName(), this);
      }