code: def push(self, field):
          '''
          Add a field to the container, if the field is a Container itself, it should be poped() when done pushing into it
  
          :param field: BaseField to push
          '''
          kassert.is_of_types(field, BaseField)
          container = self._container()
          field.enclosing = self
          if isinstance(field, Container):
              self._containers.append(field)
          if container:
              container.push(field)
          else:
              name = field.get_name()
              if name in self._fields_dict:
                  raise KittyException('field with the name (%s) already exists in this container' % (name))
              if name:
                  self._fields_dict[name] = field
              self._fields.append(field)
          return Truf push(self, field):
          '''
          Add a field to the container, if the field is a Container itself, it should be poped() when done pushing into it
  
          :param field: BaseField to push
          '''
          kassert.is_of_types(field, BaseField)
          container = self._container()
          field.enclosing = self
          if isinstance(field, Container):
              self._containers.append(field)
          if container:
              container.push(field)
          else:
              name = field.get_name()
              if name in self._fields_dict:
                  raise KittyException('field with the name (%s) already exists in this container' % (name))
              if name:
                  self._fields_dict[name] = field
              self._fields.append(field)
          return True
docs: Add a field to the container, if the field is a Container itself, it should be poped() when done pushing into it
  
          :param field: BaseField to push