docs: def _get_fields(attrs, field_class, pop=False, ordered=False):
      """Get fields from a class. If ordered=True, fields will sorted by creation index.
  
      :param attrs: Mapping of class attributes
      :param type field_class: Base field class
      :param bool pop: Remove matching fields
      """
      fields = [
          (field_name, field_value)
          for field_name, field_value in iteritems(attrs)
          if is_instance_or_subclass(field_value, field_class)
      ]
      if pop:
          for field_name, _ in fields:
              del attrs[field_name]
      if ordered:
          fields.sort(key=lambda pair: pair[1]._creation_index)
      return fields