private static <K, V> Map<K, V> tupleListToMap(final OtpErlangObject object,
final ListElementConverter<K> keyConv,
final ListElementConverter<V> valConv) throws ClassCastException {
final OtpErlangList list = ErlangValue.otpObjectToOtpList(object);
final LinkedHashMap<K, V> result = new LinkedHashMap<K, V>(list.arity());
for (int i = 0; i < list.arity(); ++i) {
final OtpErlangTuple element = (OtpErlangTuple) list.elementAt(i);
if (element.arity() != 2) {
throw new ClassCastException("wrong tuple arity");
}
final K key = keyConv.convert(i, new ErlangValue(element.elementAt(0)));