<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def section(self, plane_normal, plane_origin):
 """ Returns a 3D cross section of the current mesh and a plane defined by origin and normal. Parameters --------- plane_normal: (3) vector for plane normal Normal vector of section plane plane_origin : (3,) float Point on the cross section plane Returns --------- intersections: Path3D or None Curve of intersection """

        # turn line segments into Path2D/Path3D objects
        from .exchange.load import load_path

        # return a single cross section in 3D
        lines, face_index = intersections.mesh_plane(
            mesh=self,
            plane_normal=plane_normal,
            plane_origin=plane_origin,
            return_faces=True)

        # if the section didn't hit the mesh return None
        if len(lines) == 0:
            return None

        # otherwise load the line segments into a Path3D object
        path = load_path(lines)

        # add the face index info into metadata
        path.metadata['face_index'] = face_index

        return path