docs: private static boolean localSymtabExtends(SymbolTable superset, SymbolTable subset)
      {
          if (subset.getMaxId() > superset.getMaxId())
          {
              // the subset has more symbols
              return false;
          }
  
          // NB this API almost certainly requires cloning--symbol table's API doesn't give us a way to polymorphically
          //    get this without materializing an array
          final SymbolTable[] supersetImports     = superset.getImportedTables();
          final SymbolTable[] subsetImports       = subset.getImportedTables();
  
          // TODO this is over-strict, but not as strict as LocalSymbolTable.symtabExtends()
          if (supersetImports.length != subsetImports.length)
          {
              return false;
          }
          // NB we cannot trust Arrays.equals--we don't know how an implementation will implement it...
          for (int i = 0; i < supersetImports.length; i++)
          {
              final SymbolTable supersetImport = supersetImports[i];
              final SymbolTable subsetImport = subsetImports[i];
              if (!supersetImport.getName().equals(subsetImport.getName())
                   || supersetImport.getVersion() != subsetImport.getVersion())
              {
                  // bad match on import
                  return false;
              }
          }
  
          // all the imports lined up, lets make sure the locals line up too
          final Iterator<String> supersetIter     = superset.iterateDeclaredSymbolNames();
          final Iterator<String> subsetIter       = subset.iterateDeclaredSymbolNames();
          while (subsetIter.hasNext())
          {
              final String nextSubsetSymbol       = subsetIter.next();
              final String nextSupersetSymbol     = supersetIter.next();
              if (!nextSubsetSymbol.equals(nextSupersetSymbol))
              {
                  // local symbol mismatch
                  return false;
              }
          }
  
          // we made it this far--superset is really a superset of subset
          return true;
      }