package flowexpression;

import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import testlib.flowexpression.qual.FlowExp;

public class Complex {
    class DocCategory {
        public Map<String, String> fields = new HashMap<>();
    }

    protected DocCategory[] categories = new DocCategory[2];

    void test() {
        for (int c = 0; c < categories.length; c++) {

            for (
            @FlowExp("categories[c].fields") String field : sortedKeySet(categories[c].fields)) {
                @FlowExp("categories[c].fields") String f = field;
            }
        }
    }

    public static <K extends Comparable<? super K>, V> Collection<@FlowExp("#1") K> sortedKeySet(
            Map<K, V> m) {
        throw new RuntimeException();
    }

    private static Map<Integer, List<@FlowExp("succs1") Integer>> succs1 = new HashMap<>();

    void method() {
        Map<Integer, List<Integer>> dom1post = dominators(succs1);
    }

    public static <T> Map<T, List<T>> dominators(Map<T, List<@FlowExp("#1") T>> predecessors) {
        throw new RuntimeException();
    }
}
