interface ImmutableList<E> implements Iterable<E> {

    // Constructeurs (hors interface)
    ImmutableList<E>();        // Liste vide
    ImmutableList<E>(List<E>); // Conversion
    ImmutableList<E>(E...);    // Construction
    ImmutableList<E>(E[]);     // Conversion

    // Fabriques (ajout d'un élément en tête)
    // Scala: + operator
    ImmutableList<E> cons(E);

    // size + get = point de vue IndexedSeq en Scala

    // We use Java List interface name
    boolean isEmpty();
    int size();
    E get(int);
    int indexOf(E);

    // head + tail + isEmpty = point de vue LinearSeq en Scala
    E head();
    ImmutableList<E> tail();
    E last();

    // Opérations sur les listes
    List<E> subList(int, int); 		 // Java && Guava
    List<E> reverse();         		 // Guava: reverse
    List<E> sort(Comparator<? super E>); // Java: sort, Scala: sorted/sortWith

    // Scala, Java, Guava
    boolean contains(E);
    // Java
    boolean containsAll(Collection<E>);
    boolean containsAll(ImmutableList<E>);
    boolean containsAll(E[]);
    boolean containsAll(E...);

    boolean any(Predicate<? super E>); // Scala: exists/find
    boolean all(Predicate<? super E>); // Scala: forall

    // Java: addAll, Scala: ++ operator
    ImmutableList<E> concat(Collection<E>);
    ImmutableList<E> concat(ImmutableList<E>);
    ImmutableList<E> concat(E[]);
    ImmutableList<E> concat(E...);
    ImmutableList<E> concat(E);

    // Java
    ImmutableList<E> remove(Collection<E>);
    ImmutableList<E> remove(ImmutableList<E>);
    ImmutableList<E> remove(E[]);
    ImmutableList<E> remove(E...);
    ImmutableList<E> remove(E);

    // Scala: union
    ImmutableList<E> union(Collection<E>);
    ImmutableList<E> union(ImmutableList<E>);
    ImmutableList<E> union(E[]);
    ImmutableList<E> union(E...);

    // Scala: intersect, Java: retainsAll
    ImmutableList<E> intersect(Collection<E>);
    ImmutableList<E> intersect(ImmutableList<E>);
    ImmutableList<E> intersect(E[]);
    ImmutableList<E> intersect(E...);

    ImmutableList<F> map(Function<? super E, ? super F>); // Scala: map
    ImmutableList<E> filter(Predicate<? super E>);        // Scala: filter
    F reduce(Function<? super E, ? super E, ? super F>);  // Scala: reduce

    // Intégration : itérateurs + flots
    Iterator<E> iterator();
    Stream<E> stream();
    Stream<E> parallelStream();

    // Object methods
    ImmutableList<E> clone(); // clonage inutile pour des données immutables ?
    boolean equals(ImmutableList<E>);
    int hashCode();

    // Conversions
    E[] toArray();    // Scala && Java: toArray
    List<E> asList(); // Scala: toList, Guava: asList
}

// Autres idées : reverseIterator / reverseStream / concat(int, E..) / remove(int)

@@ -1,16 +1,284 @@
+// http://www.scala-lang.org/api/2.11.0/index.html#scala.collection.immutable.List%0A// http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true%0A// http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/ImmutableList.html%0A%0A
 interface Immuta
@@ -383,16 +383,22 @@
         
+      
 // Liste
@@ -424,20 +424,26 @@
 List%3CE%3E(
-List
+Collection
 %3CE%3E); //
@@ -481,16 +481,22 @@
 %3E(E...);
+    %09 
     // C
@@ -533,16 +533,22 @@
 E%3E(E%5B%5D);
+     %09
      // 
@@ -570,110 +570,8 @@
  // 
-Fabriques (ajout d'un %C3%A9l%C3%A9ment en t%C3%AAte)%0A    // Scala: + operator%0A    ImmutableList%3CE%3E cons(E);%0A%0A    // 
 size
@@ -576,16 +576,26 @@
 ze + get
+ + isEmpty
  = point
@@ -1401,16 +1401,119 @@
 forall%0A%0A
+    // Fabriques (ajout d'un %C3%A9l%C3%A9ment en t%C3%AAte)%0A%0A    // Scala: + operator%0A    ImmutableList%3CE%3E cons(E);%0A%0A
     // J
@@ -1936,24 +1936,58 @@
 %3E remove(E);
+%0A    ImmutableList%3CE%3E remove(int);
 %0A%0A    // Sca
@@ -1992,15 +1992,8 @@
 cala
-: union
 %0A   
@@ -2357,24 +2357,42 @@
 ect(E...);%0A%0A
+    // Scala: map%0A
     Immutabl
@@ -2436,16 +2436,20 @@
 per F%3E);
+%0A   
  // Scal
@@ -2443,35 +2443,38 @@
 ;%0A    // Scala: 
-map
+filter
 %0A    ImmutableLi
@@ -2508,20 +2508,17 @@
 per E%3E);
-    
+%0A
     // S
@@ -2519,30 +2519,30 @@
   // Scala: 
-filter
+reduce
 %0A    F reduc
@@ -2586,34 +2586,16 @@
 per F%3E);
-  // Scala: reduce
 %0A%0A    //
@@ -2735,16 +2735,17 @@
 methods%0A
+%0A
     Immu
@@ -2769,57 +2769,8 @@
 e();
- // clonage inutile pour des donn%C3%A9es immutables ?
 %0A   
@@ -2952,88 +2952,4 @@
 t%0A%7D%0A
-%0A// Autres id%C3%A9es : reverseIterator / reverseStream / concat(int, E..) / remove(int)%0A

Update interface prototype