Probuilder AppendElement.AppendFaces doesnt work at all

public override void InsertFace()
        {
            m_faceSelection.BeginChange();

            ProBuilderMesh[] meshes = m_faceSelection.Meshes.OrderBy(m => m == m_faceSelection.LastMesh).ToArray();
            foreach (ProBuilderMesh mesh in meshes)
            {
                IList<int> faceIndexes = m_faceSelection.GetFaces(mesh).ToArray();
                for (int i = 0; i < faceIndexes.Count; ++i)
                {
                    m_faceSelection.Remove(mesh, faceIndexes[i]);
                }

                IList<Face> faces = new List<Face>();
                mesh.GetFaces(faceIndexes, faces);

                Vector3[][] positions = new Vector3[faces.Count][];
                Color[][] colors = new Color[faces.Count][];
                Vector2[][] uvs = new Vector2[faces.Count][];
                int[][] shared = new int[faces.Count][];
                for (int i = 0; i < faces.Count; i++)
                {
                    var vertices = mesh.GetVertices(faces[i].indexes);
                    positions[i] = new Vector3[vertices.Length];
                    int j = 0;
                    foreach (var index in vertices)
                    {
                        positions[i][j] = index.position + mesh.transform.position;
                        Debug.DrawRay(positions[i][j],Vector3.down,Color.red,10f);
                        j++;
                    }

                    colors[i] = new Color[] { };
                    uvs[i] = new Vector2[] {Vector2.zero, Vector2.zero, Vector2.zero, Vector2.zero,Vector2.zero, Vector2.zero};
                    // for (int k = 0; k < faces[i].indexes.Count; k++)
                    // {
                    //     Debug.Log(k + " " + faces[i].indexes[k]);
                    // }
                    shared[i] = faces[i].indexes.ToArray();
                }


                mesh.AppendFaces(positions, colors, uvs, faces.ToArray(), shared);

                for (int i = 0; i < faceIndexes.Count; ++i)
                {
                    m_faceSelection.Add(mesh, faceIndexes[i]);
                }

                mesh.ToMesh();
                mesh.Refresh();
            }

            m_faceSelection.EndChange();

            m_faceSelection.Synchronize(
                m_faceSelection.GetCenterOfMass(),
                m_faceSelection.LastPosition);

            RaisePBMeshesChanged(false);
        }

the probuilder mesh color array is always null and the method wont going well!

Edit:I didnt set the colors array correctly, but can you guys give me an example of how AppendFaces works?