@@ -47,7 +47,8 @@ public class $<T> {
4747 private static final java .util .concurrent .atomic .AtomicInteger UNIQUE_ID =
4848 new java .util .concurrent .atomic .AtomicInteger (0 );
4949 private static final String ALL_SYMBOLS = "([\\ s\\ S]+?)" ;
50- private static final java .util .regex .Pattern FORMAT_PATTERN = java .util .regex .Pattern .compile ("\\ {\\ s*(\\ d*)\\ s*\\ }" );
50+ private static final java .util .regex .Pattern FORMAT_PATTERN =
51+ java .util .regex .Pattern .compile ("\\ {\\ s*(\\ d*)\\ s*\\ }" );
5152 private final Iterable <T > iterable ;
5253 private final Optional <String > string ;
5354
@@ -963,6 +964,7 @@ public static <E> E head(final Iterable<E> iterable) {
963964 return first (iterable );
964965 }
965966
967+ @ SafeVarargs
966968 public static <E > E head (final E ... array ) {
967969 return first (array );
968970 }
@@ -1004,6 +1006,7 @@ public List<T> initial(final int n) {
10041006 return initial ((List <T >) iterable , n );
10051007 }
10061008
1009+ @ SafeVarargs
10071010 public static <E > E last (final E ... array ) {
10081011 return array [array .length - 1 ];
10091012 }
@@ -1084,6 +1087,7 @@ public static <E> List<E> tail(final List<E> list, final int n) {
10841087 return rest (list , n );
10851088 }
10861089
1090+ @ SafeVarargs
10871091 public static <E > E [] tail (final E ... array ) {
10881092 return rest (array );
10891093 }
@@ -2385,6 +2389,7 @@ public Chain<String> join(final String separator) {
23852389 return new Chain <String >($ .join (list , separator ));
23862390 }
23872391
2392+ @ SuppressWarnings ("unchecked" )
23882393 public Chain <T > push (final T ... values ) {
23892394 return new Chain <T >($ .push (value (), values ));
23902395 }
@@ -2397,6 +2402,7 @@ public Chain<Tuple<T, List<T>>> shift() {
23972402 return new Chain <Tuple <T , List <T >>>($ .shift (value ()));
23982403 }
23992404
2405+ @ SuppressWarnings ("unchecked" )
24002406 public Chain <T > unshift (final T ... values ) {
24012407 return new Chain <T >($ .unshift (value (), values ));
24022408 }
@@ -2452,6 +2458,7 @@ public static <T extends Comparable<T>> List<T> sort(final Iterable<T> iterable)
24522458 return localList ;
24532459 }
24542460
2461+ @ SuppressWarnings ("unchecked" )
24552462 public static <T extends Comparable <T >> T [] sort (final T ... array ) {
24562463 final T [] localArray = array .clone ();
24572464 Arrays .sort (localArray );
@@ -2496,6 +2503,7 @@ public String join() {
24962503 return join (iterable );
24972504 }
24982505
2506+ @ SafeVarargs
24992507 public static <T > List <T > push (final List <T > list , final T ... values ) {
25002508 final List <T > result = newArrayList (list );
25012509 for (T value : values ) {
@@ -2504,6 +2512,7 @@ public static <T> List<T> push(final List<T> list, final T ... values) {
25042512 return result ;
25052513 }
25062514
2515+ @ SuppressWarnings ("unchecked" )
25072516 public List <T > push (final T ... values ) {
25082517 return push ((List <T >) getIterable (), values );
25092518 }
@@ -2516,6 +2525,7 @@ public Tuple<T, List<T>> pop() {
25162525 return pop ((List <T >) getIterable ());
25172526 }
25182527
2528+ @ SafeVarargs
25192529 public static <T > List <T > unshift (final List <T > list , final T ... values ) {
25202530 final List <T > result = newArrayList (list );
25212531 int index = 0 ;
@@ -2526,6 +2536,7 @@ public static <T> List<T> unshift(final List<T> list, final T ... values) {
25262536 return result ;
25272537 }
25282538
2539+ @ SuppressWarnings ("unchecked" )
25292540 public List <T > unshift (final T ... values ) {
25302541 return unshift ((List <T >) getIterable (), values );
25312542 }
@@ -2585,9 +2596,14 @@ public static <T> List<T> slice(final Iterable<T> iterable, final int start) {
25852596 return result ;
25862597 }
25872598
2588- @ SuppressWarnings ("unchecked" )
25892599 public static <T > T [] slice (final T [] array , final int start ) {
2590- return (T []) slice (Arrays .asList (array ), start ).toArray ();
2600+ final T [] result ;
2601+ if (start >= 0 ) {
2602+ result = Arrays .copyOfRange (array , start , array .length );
2603+ } else {
2604+ result = Arrays .copyOfRange (array , array .length + start , array .length );
2605+ }
2606+ return result ;
25912607 }
25922608
25932609 public List <T > slice (final int start ) {
0 commit comments