@Test
public void testRetain() {

  String[] a, b, r;
  a = new String[] {"a", "b", "c", "d"};
  b = new String[] {"a", "b", "c", "d"};
  r = AssembleUtil.retain(a, b, 0, 0, 0);
  assertArrayEquals(a, r);
  a = new String[] {"b", "c", "d"};
  b = new String[] {"a", "b", "c", "d"};
  r = AssembleUtil.retain(a, b, 0, 0, 0);
  assertArrayEquals(a, r);
  a = new String[] {"a", "b", "c", "d"};
  b = new String[] {"b", "c", "d"};
  r = AssembleUtil.retain(a, b, 0, 0, 0);
  assertArrayEquals(b, r);
  a = new String[] {"a", "b", "c"};
  b = new String[] {"a", "b", "c", "d"};
  r = AssembleUtil.retain(a, b, 0, 0, 0);
  assertArrayEquals(a, r);
  a = new String[] {"a", "b", "c", "d"};
  b = new String[] {"a", "b", "c"};
  r = AssembleUtil.retain(a, b, 0, 0, 0);
  assertArrayEquals(b, r);
  a = new String[] {"a", "b", "d"};
  b = new String[] {"a", "b", "c", "d"};
  r = AssembleUtil.retain(a, b, 0, 0, 0);
  assertArrayEquals(a, r);
  a = new String[] {"a", "b", "c", "d"};
  b = new String[] {"a", "b", "d"};
  r = AssembleUtil.retain(a, b, 0, 0, 0);
  assertArrayEquals(b, r);
  a = new String[] {"a", "c", "d"};
  b = new String[] {"a", "b", "c", "d"};
  r = AssembleUtil.retain(a, b, 0, 0, 0);
  assertArrayEquals(a, r);
  a = new String[] {"a", "b", "c", "d"};
  b = new String[] {"a", "c", "d"};
  r = AssembleUtil.retain(a, b, 0, 0, 0);
  assertArrayEquals(b, r);
  a = new String[] {"a", "d"};
  b = new String[] {"a", "b", "c", "d"};
  r = AssembleUtil.retain(a, b, 0, 0, 0);
  assertArrayEquals(a, r);
  a = new String[] {"a", "b", "c", "d"};
  b = new String[] {"a", "d"};
  r = AssembleUtil.retain(a, b, 0, 0, 0);
  assertArrayEquals(b, r);
  a = new String[] {"a", "c", "d"};
  b = new String[] {"a", "b", "d"};
  r = AssembleUtil.retain(a, b, 0, 0, 0);
  assertArrayEquals(new String[] {"a", "d"}, r);
  a = new String[] {"a", "b", "d"};
  b = new String[] {"a", "c", "d"};
  r = AssembleUtil.retain(a, b, 0, 0, 0);
  assertArrayEquals(new String[] {"a", "d"}, r);
  a = new String[] {"c", "d"};
  b = new String[] {"a", "b", "d"};
  r = AssembleUtil.retain(a, b, 0, 0, 0);
  assertArrayEquals(new String[] {"d"}, r);
  a = new String[] {"a", "b"};
  b = new String[] {"a", "c"};
  r = AssembleUtil.retain(a, b, 0, 0, 0);
  assertArrayEquals(new String[] {"a"}, r);
  a = new String[] {"a", "b"};
  b = new String[] {"c", "d"};
  r = AssembleUtil.retain(a, b, 0, 0, 0);
  assertNull(r);
}