package org.realityforge.gwt.appcache.linker;

import com.google.gwt.core.ext.Linker;
import com.google.gwt.core.ext.linker.Artifact;
import com.google.gwt.core.ext.linker.Transferable;
import org.realityforge.gwt.appcache.server.Permutation;

@Transferable
public class PermutationArtifact
  extends Artifact<PermutationArtifact>
{
  private static final long serialVersionUID = -2097933260935878782L;

  private final Permutation _permutation;

  PermutationArtifact( final Class<? extends Linker> linker, final Permutation permutation )
  {
    super( linker );
    _permutation = permutation;
  }

  @Override
  public int hashCode()
  {
    return getPermutation().hashCode();
  }

  @Override
  protected int compareToComparableArtifact( final PermutationArtifact o )
  {
    return getPermutation().getPermutationName().compareTo( o.getPermutation().getPermutationName() );
  }

  @Override
  protected Class<PermutationArtifact> getComparableArtifactType()
  {
    return PermutationArtifact.class;
  }

  Permutation getPermutation()
  {
    return _permutation;
  }
}

@@ -179,16 +179,75 @@
 erable;%0A
+import java.util.Objects;%0Aimport javax.annotation.Nonnull;%0A
 import o
@@ -456,16 +456,27 @@
 8782L;%0A%0A
+  @Nonnull%0A
   privat
@@ -528,24 +528,33 @@
 ionArtifact(
+ @Nonnull
  final Class
@@ -579,16 +579,25 @@
  linker,
+ @Nonnull
  final P
@@ -664,16 +664,40 @@
 tation =
+ Objects.requireNonNull(
  permuta
@@ -696,24 +696,26 @@
  permutation
+ )
 ;%0A  %7D%0A%0A  @Ov
@@ -850,16 +850,25 @@
 rtifact(
+ @Nonnull
  final P
@@ -994,32 +994,43 @@
 nName() );%0A  %7D%0A%0A
+  @Nonnull%0A
   @Override%0A  pr
@@ -1139,16 +1139,27 @@
 s;%0A  %7D%0A%0A
+  @Nonnull%0A
   Permut

Add some nullability annotations