static OpenList merge(OpenList L, OpenList M)
  {
  if( L.isEmpty() )
    return M;

  if( M.isEmpty() )
    return L;

  long firstL = ((Long)L.first()).longValue();

  long firstM = ((Long)M.first()).longValue();

  if( firstL <= firstM )
    return merge(L.rest(), M).cons(L.first());
  else
    return merge(L, M.rest()).cons(M.first());
  }

An Recursive Merge Pattern
lmerge two lists of Longs in increasing order


unwrap