В чем разница между приведенными ниже ссылками метода,
BiPredicate<List<String>,String> contains1 = List<String>::contains;
BiPredicate<List<String>,String> contains2 = List::<String>contains;
BiPredicate<List<String>,String> contains3 = List<String>::<String>contains;
Имеют ли случаи особые имена? Есть ли пример, похожий на использование?