code: public static Asset getAsset(AssetKey key) {
          int delimIdx = getDelimIndex(key);
          if (delimIdx > 0) {
              // look in package rule sets
              String pkgName = key.getName().substring(0, delimIdx);
              String assetName = key.getName().substring(delimIdx + 1);
              try {
                  Package pkgVO = PackageCache.getPackage(pkgName);
                  if (pkgVO != null) {
                      for (Asset asset : pkgVO.getAssets()) {
                          if (asset.getName().equals(assetName))
                              return getAsset(new AssetKey(asset.getId()));
                          if (Asset.JAVA.equals(key.getLanguage()) && asset.getName().equals(assetName + ".java"))
                              return getAsset(new AssetKey(asset.getId()));
                          if (Asset.GROOVY.equals(key.getLanguage()) && asset.getName().equals(assetName + ".groovy"))
                              return getAsset(new AssetKey(asset.getId()));
                      }
                  }
              }
              catch (CachingException ex) {
                  logger.severeException(ex.getMessage(), ex);
              }
              // try to load (for archived compatibility case)
              Asset asset = loadAsset(key);
              if (asset != null) {
                  getAssetMap();
                  synchronized(assetMap) {
                      assetMap.put(new AssetKey(asset), asset);
                  }
                  return asset;
              }
              return null;  // not found
          }
  
          getAssetMap();
          synchronized(assetMap) {
              for (AssetKey mapKey : assetMap.keySet()) {
                  if (key.equals(mapKey))
                      return assetMap.get(mapKey);
              }
          }
  
          Asset asset = null;
          asset = loadAsset(key);
          if (asset != null) {
              synchronized(assetMap) {
                  assetMap.put(new AssetKey(asset), asset);
              }
          }
          return asset;
      }
docs: Asset names like 'myPackage/myAsset.ext' designate package-specific versions.
  (or myPackage.MyCustomJavaClass for dynamic Java or Script).