Question: Which of the following code compiles?
Choice:
A. Collection<FilterOutputStream> c = new TreeList<BufferedOutputStream>();
B. List<OutputStream> list = new LinkedList<FileOutputStream>();
C. Set<Reader> reader = new HashSet<BufferedReader>();
D. Queue<? extends FilterOutputStream> q = new PriorityQueue<BufferedOutputStream>();
E. Deque<? super ObjectInputStream> deque = new ArrayDeque<InputStream>();
F. Queue<FilterOutputStream> queue = new ConcurrentLinkedQueue<>();
G. Set<ObjectInputStream> set = new ConcurrentSkipListSet<>();
H. Map<FileReader, FileWriter> map = new ConcurrentSkipListMap<>();