public class UsingReadOnlyInterfaces { public static class Collections { public static void useICollection(ICollection iCollection, E elem, java.util.Collection other) { java.util.Iterator iter = iCollection.iterator(); iCollection.addAll(other); iCollection.add(elem); iCollection.isEmpty(); iCollection.clear(); // this is not an error when analyzing against kotlin sources (which is a bug), this inconsistency is hard to fix with the current approach // KT-22594 // iCollection.getSize(); iCollection.size(); } public static void useCCollection(CCollection cCollection, E elem, java.util.Collection other) { java.util.Iterator iter = cCollection.iterator(); cCollection.addAll(other); cCollection.add(elem); cCollection.isEmpty(); cCollection.clear(); cCollection.getSize(); cCollection.size(); cCollection.contains(elem); cCollection.contains("sasd"); cCollection.removeAll(other); cCollection.retainAll(other); } public static class ExtendCCollection extends CCollection { @Override public void clear() {} } } public static class Maps { public static void useCMap(CMap cMap) { cMap.isEmpty(); java.util.Set s = cMap.getKeys(); s = cMap.keySet(); java.util.Collection v = cMap.getValues(); v = cMap.values(); java.util.Set> e = cMap.entrySet(); e = cMap.getEntries(); } } }