public unsafe PathQueryStatus GetEdgesAndNeighbors(PolygonId node, NativeSlice <Vector3> edgeVertices, NativeSlice <PolygonId> neighbors, NativeSlice <byte> edgeIndices, out int verticesCount, out int neighborsCount)
        {
            AtomicSafetyHandle.CheckReadAndThrow(this.m_Safety);
            bool flag = edgeIndices.Length != neighbors.Length && neighbors.Length > 0 && edgeIndices.Length > 0;

            if (flag)
            {
                throw new ArgumentException(string.Format("The length of the {0} buffer ({1}) ", "edgeIndices", edgeIndices.Length) + string.Format("needs to be the same as that of the {0} buffer ({1}) ", "neighbors", neighbors.Length) + "because the elements from the two arrays will pair up at the same index.");
            }
            void *verts        = (edgeVertices.Length > 0) ? edgeVertices.GetUnsafePtr <Vector3>() : null;
            void *neighbors2   = (neighbors.Length > 0) ? neighbors.GetUnsafePtr <PolygonId>() : null;
            void *edgeIndices2 = (edgeIndices.Length > 0) ? edgeIndices.GetUnsafePtr <byte>() : null;
            int   length       = edgeVertices.Length;
            int   maxNei       = (neighbors.Length > 0) ? neighbors.Length : edgeIndices.Length;

            return(NavMeshQuery.GetEdgesAndNeighbors(this.m_NavMeshQuery, node, length, maxNei, verts, neighbors2, edgeIndices2, out verticesCount, out neighborsCount));
        }