code: @PublicAPI(usage = ACCESS)
      public static Transformer assignedFrom(SliceAssignment sliceAssignment) {
          String description = "slices assigned from " + sliceAssignment.getDescription();
          return new Transformer(sliceAssignment, description);
      }
docs: Supports partitioning a set of {@link JavaClasses} into different {@link Slices} by the supplied
  {@link SliceAssignment}. This is basically a mapping {@link JavaClass} -&gt; {@link SliceIdentifier},
  i.e. if the {@link SliceAssignment} returns the same
  {@link SliceIdentifier} for two classes they will end up in the same slice.
  A {@link JavaClass} will be ignored within the slices, if its {@link SliceIdentifier} is
  {@link SliceIdentifier#ignore()}. For example
  <p>
  Suppose there are four classes:<br><br>
  {@code com.somewhere.SomeClass}<br>
  {@code com.somewhere.AnotherClass}<br>
  {@code com.other.elsewhere.YetAnotherClass}<br>
  {@code com.randomly.anywhere.AndYetAnotherClass}<br><br>
  If slices are created by specifying<br><br>
  {@code Slices.of(classes).assignedFrom(customAssignment)}<br><br>
  
  and the {@code customAssignment} maps<br><br>
  
  {@code com.somewhere -> SliceIdentifier.of("somewhere")}<br>
  {@code com.other.elsewhere -> SliceIdentifier.of("elsewhere")}<br>
  {@code com.randomly -> SliceIdentifier.ignore()}<br><br>
  then the result will be two slices, identified by the single strings 'somewhere' (containing {@code SomeClass}
  and {@code AnotherClass}) and 'elsewhere' (containing {@code YetAnotherClass}). The class {@code AndYetAnotherClass}
  will be missing from all slices.
  
  @param sliceAssignment The assignment of {@link JavaClass} to {@link SliceIdentifier}
  @return Slices partitioned according the supplied assignment