code: def _insert_layer_after(self, layer_idx, new_layer, new_keras_layer):
          
          # reminder: new_keras_layer is not part of the original Keras network,
          # so it's input / output blob information is missing. It serves only as
          # a parameter holder.
          layer = self.layer_list[layer_idx]
          self.layer_list.insert(layer_idx+1, new_layer)
          self.keras_layer_map[new_layer] = new_keras_layer
          successors = self.get_successors(layer)
          # add edge layer -> new_layer
          self._add_edge(layer, new_layer)
          # add edges new_layer -> layer_successor, remove layer -> successor
          for succ in successors:
              self._add_edge(new_layer, succ)
              self._remove_edge(layer, succ)
docs: Insert the new_layer after layer, whose position is layer_idx. The new layer's
          parameter is stored in a Keras layer called new_keras_layer