code: @Override
      public Archive<T> shallowCopy(Filter<ArchivePath> filter) {
          Validate.notNull(filter, "Filter must be specified");
  
          // Get the actual class type and make a shallow copy of the the underlying archive,
          // using the same underlying configuration
          final Class<T> actualClass = this.getActualClass();
          final Archive<?> underlyingArchive = this.getArchive();
          final Configuration existingConfig = ((Configurable) underlyingArchive).getConfiguration();
          final Domain domain = ShrinkWrap.createDomain(existingConfig);
          final ArchiveFactory factory = domain.getArchiveFactory();
          final Archive<T> newArchive = factory.create(actualClass, this.getName());
          final Map<ArchivePath, Node> contents = underlyingArchive.getContent();
          for (final ArchivePath path : contents.keySet()) {
              Asset asset = contents.get(path).getAsset();
              if (asset != null) {
                  if(!filter.include(path)) {
                      continue;
                  }
                  newArchive.add(asset, path);
              }
          }
          return newArchive;
      }
docs: {@inheritDoc}
  
  @see org.jboss.shrinkwrap.api.Archive#shallowCopy(Filter)