public static ActionClass createAction(IClass holder, IProperty ei, XmlObjectWriter writer, XmlNode node, IMethod scopeMethod, IActionsHolder actsHolder, Form caller)
 {
     if (ei != null)
     {
         IPropertyEx pp = ei as IPropertyEx;
         if (pp != null)
         {
             ActionClass act = new ActionClass(pp.RootPointer);
             act.ActionMethod = pp.CreateSetterMethodPointer(act);
             act.ActionName   = act.ActionMethod.DefaultActionName;
             act.ActionHolder = actsHolder;
             if (pp.RootPointer.CreateNewAction(act, writer, scopeMethod, caller))
             {
                 return(act);
             }
         }
         else
         {
             PropertyClass pc = ei as PropertyClass;
             if (pc != null)
             {
                 PropertyClass pc2 = (PropertyClass)pc.Clone();
                 pc2.SetHolder(holder);
                 ActionClass act = new ActionClass(holder.RootPointer);
                 act.ActionMethod = pc2.CreateSetterMethodPointer(act);
                 act.ActionName   = act.ActionMethod.DefaultActionName;                      // pc.Holder.CodeName + ".Set" + pc.Name;
                 act.ActionHolder = actsHolder;
                 if (holder.RootPointer.CreateNewAction(act, writer, scopeMethod, caller))
                 {
                     return(act);
                 }
             }
             else
             {
             }
         }
     }
     return(null);
 }