internal EditInterface getEditInterface()
 {
     if (editInterface == null)
     {
         editInterface = ReflectedEditInterface.createEditInterface(this, ReflectedEditInterface.DefaultScanner, Name + " - IK Solver", null);
         editInterface.addCommand(new EditInterfaceCommand("Add Child Solver", callback =>
         {
             addChildSolver(new BEPUikSolverDefinition()
             {
                 Name = "Child"
             });
         }));
         childSolversManager = editInterface.createEditInterfaceManager <BEPUikSolverDefinition>();
         childSolversManager.addCommand(new EditInterfaceCommand("Remove", callback =>
         {
             removeChildSolver(childSolversManager.resolveSourceObject(callback.getSelectedEditInterface()));
         }));
         foreach (var child in childSolvers)
         {
             childSolversManager.addSubInterface(child, child.getEditInterface());
         }
     }
     return(editInterface);
 }