import java.util.HashMap;
import java.util.List;
import java.util.Map;

public abstract class A<T extends A<
		T,
		S>, S extends List<
				?>> {

	T t;
	S s;
	A<
			T,
			S> a;

	Object field = a.<T, S>getMap(t, s);

	public A() {
		<T, S>this(null, null);
	}

	public <M, N> A(M param1, N param2) {

	}

	public <M, N> Map<
			M,
			N> getMap(M key, N value) {
		return null;
	}

}

class B extends A<
		B,
		List<
				String>> {

	public <M, N> B(M param1, N param2) {
		<M, N>super(param1, param2);
	}

	public <M, N> Map<
			M,
			N> getMap(M key, N value) {
		B b = new <M, N>B(key, value);
		AMethod method = b::<String, String>getMap;
		AMethod method2 = super::<String, String>getMap;
		AMethod method3 = AMap<
				M>::<String, String>new;
		AMethod method4 = AMap<
				M>::<String, String>createAMap;
		return super.<M, N>getMap(key, value);
	}
}

interface AMethod {
	Map<
			String,
			String> getMap(String key, String value);
}

class AMap<T> extends HashMap<
		String,
		String> {
	public <M, N> AMap(String param1, String param2) {

	}

	public static <M, N> AMap<
			M> createAMap(String param1, String param2) {
		return new AMap<>(param1, param2);
	}
}