@ExposedMethod(type = MethodType.BINARY, doc = BuiltinDocs.list___iadd___doc)
  final synchronized PyObject list___iadd__(PyObject o) {
    PyType oType = o.getType();
    if (oType == TYPE || oType == PyTuple.TYPE || this == o) {
      extend(fastSequence(o, "argument must be iterable"));
      return this;
    }

    PyObject it;
    try {
      it = o.__iter__();
    } catch (PyException pye) {
      if (!pye.match(Py.TypeError)) {
        throw pye;
      }
      return null;
    }
    extend(it);
    return this;
  }