code: def _validate_complex_fault_geometry(self, node, _float_re):
          
          valid_edges = []
          for edge_node in node.nodes:
              try:
                  coords = split_coords_3d(edge_node.LineString.posList.text)
                  edge = geo.Line([geo.Point(*p) for p in coords])
              except ValueError:
                  # See use of validation error in simple geometry case
                  # The node is valid if all of the edges compile correctly
                  edge = []
              if len(edge):
                  valid_edges.append(True)
              else:
                  valid_edges.append(False)
          if node["spacing"] and all(valid_edges):
              return
          raise LogicTreeError(
              node, self.filename,
              "'complexFaultGeometry' node is not valid")
docs: Validates a node representation of a complex fault geometry - this
          check merely verifies that the format is correct. If the geometry
          does not conform to the Aki & Richards convention this will not be
          verified here, but will raise an error when the surface is created.