docs: def visit_field_class(self, item, descriptor=None, fields=None):
          """Visit a class node containing a list of field definitions."""
          discovered_fields = collections.OrderedDict()
          field_groups = {}
          for node in item.body:
              if isinstance(node, ast.ClassDef):
                  field_groups[node.name] = self.visit_field_class(node)
                  continue
  
              if not isinstance(node, ast.Assign):
                  continue
              if not isinstance(node.value, ast.Call):
                  continue
              if not isinstance(node.targets[0], ast.Name):
                  continue
  
              # Build accessible symbols table.
              symtable = {}
              # All field types.
              symtable.update({
                  field.__name__: field
                  for field in get_available_fields()
              })
              # Field group classes.
              symtable.update(field_groups)
  
              evaluator = SafeEvaluator(symtable=symtable)
  
              name = node.targets[0].id
              try:
                  field = evaluator.run(node.value)
              except Exception as ex:
                  # TODO: Handle errors.
                  raise ex
  
              if descriptor is not None:
                  field.contribute_to_class(descriptor, fields, name)
              else:
                  discovered_fields[name] = field
  
          if descriptor is None:
              class Fields:
                  """Fields wrapper."""
  
              for name, field in discovered_fields.items():
                  setattr(Fields, name, field)
  
              return Fields