py: Add MICROPY_PY_ALL_SPECIAL_METHODS and __iadd__ special method under it.
diff --git a/py/mpconfig.h b/py/mpconfig.h
index b54bd65..e8c8fcc 100644
--- a/py/mpconfig.h
+++ b/py/mpconfig.h
@@ -376,6 +376,12 @@
 #define MICROPY_PY_BUILTINS_PROPERTY (1)
 #endif
 
+// Whether to support complete set of special methods
+// for user classes, otherwise only the most used
+#ifndef MICROPY_PY_ALL_SPECIAL_METHODS
+#define MICROPY_PY_ALL_SPECIAL_METHODS (0)
+#endif
+
 // Whether to support compile function
 #ifndef MICROPY_PY_BUILTINS_COMPILE
 #define MICROPY_PY_BUILTINS_COMPILE (0)
diff --git a/py/objtype.c b/py/objtype.c
index 53408a0..f905831 100644
--- a/py/objtype.c
+++ b/py/objtype.c
@@ -378,9 +378,11 @@
     MP_BINARY_OP_INPLACE_XOR,
     MP_BINARY_OP_INPLACE_AND,
     MP_BINARY_OP_INPLACE_LSHIFT,
-    MP_BINARY_OP_INPLACE_RSHIFT,
-    MP_BINARY_OP_INPLACE_ADD,
-    MP_BINARY_OP_INPLACE_SUBTRACT,
+    MP_BINARY_OP_INPLACE_RSHIFT,*/
+    #if MICROPY_PY_ALL_SPECIAL_METHODS
+    [MP_BINARY_OP_INPLACE_ADD] = MP_QSTR___iadd__,
+    #endif
+    /*MP_BINARY_OP_INPLACE_SUBTRACT,
     MP_BINARY_OP_INPLACE_MULTIPLY,
     MP_BINARY_OP_INPLACE_FLOOR_DIVIDE,
     MP_BINARY_OP_INPLACE_TRUE_DIVIDE,
diff --git a/py/qstrdefs.h b/py/qstrdefs.h
index 23c2507..ffb2bf0 100644
--- a/py/qstrdefs.h
+++ b/py/qstrdefs.h
@@ -75,6 +75,9 @@
 Q(__le__)
 Q(__ge__)
 Q(__reversed__)
+#if MICROPY_PY_ALL_SPECIAL_METHODS
+Q(__iadd__)
+#endif
 
 Q(micropython)
 Q(bytecode)
diff --git a/unix/mpconfigport.h b/unix/mpconfigport.h
index 42650eb..a0366d9 100644
--- a/unix/mpconfigport.h
+++ b/unix/mpconfigport.h
@@ -59,6 +59,7 @@
 #define MICROPY_PY_BUILTINS_FROZENSET (1)
 #define MICROPY_PY_BUILTINS_COMPILE (1)
 #define MICROPY_PY_MICROPYTHON_MEM_INFO (1)
+#define MICROPY_PY_ALL_SPECIAL_METHODS (1)
 #define MICROPY_PY_SYS_EXIT         (1)
 #define MICROPY_PY_SYS_PLATFORM     "linux"
 #define MICROPY_PY_SYS_MAXSIZE      (1)