code: @Override
      @PublicAPI(usage = ACCESS)
      public Slice as(String pattern) {
          return new Slice(sliceAssignment, matchingGroups, new Description(pattern), classes);
      }
docs: The pattern can be a description with references to the matching groups by '$' and position.
  E.g. slices are created by 'some.svc.(*).sub.(*)', and the pattern is "the module $2 of service $1",
  and we match 'some.svc.foo.module.bar', then the resulting description will be
  "the module bar of service foo".
  
  @param pattern The description pattern with numbered references of the form $i
  @return Same slice with different description