Multiple steppers including limit Switches does not work

consider

enum { Off = HIGH, On = LOW };

#undef MyHW
#ifdef MyHW
# define limitSwitchA A1
# define limitSwitchB A2
# define solenoidA    13
# define solenoidB    12

class AccelStepper {
    byte pin;

  public:
    AccelStepper (int a, int b, int p)  {
        pin = p;
        pinMode (pin, OUTPUT);
        digitalWrite (pin, Off);
    };

    void setAcceleration (int x)   { };
    void setMaxSpeed     (int x)   { };
    void setSpeed        (int x)   { };
    void runSpeed        (void)    { digitalWrite (pin, On); };
    void stop            (void)    { digitalWrite (pin, Off); };
};

AccelStepper StepperA(1, 26, 10);
AccelStepper StepperB(1, 13, 11);

#else
# include <AccelStepper.h>
# define limitSwitchA 4
# define limitSwitchB 5
# define solenoidA 8
# define solenoidB 9

AccelStepper StepperA(1, 26, 25);
AccelStepper StepperB(1, 13, 12);
#endif

int state = 0;
// ---------------------interval ---------------------
unsigned long Interval = 10000;
// ---------------------millis ---------------------
unsigned long currentMillis = 0;    // stores the value of millis() in each iteration of loop()
unsigned long previousMillis = 0;   // will store last time the steppers were updated

//==============================================================================
void setup()
{
    // Set all default speeds and accelerations
    StepperA.setMaxSpeed(2000);
    StepperA.setAcceleration(1000);
    StepperA.setSpeed(2000);
    StepperB.setMaxSpeed(2000);
    StepperB.setAcceleration(1000);
    StepperB.setSpeed(2000);

    pinMode(limitSwitchA, INPUT_PULLUP);
    pinMode(limitSwitchB, INPUT_PULLUP);

    pinMode(solenoidA, OUTPUT);
    pinMode(solenoidB, OUTPUT);
    digitalWrite(solenoidA, Off);
    digitalWrite(solenoidB, Off);

    Serial.begin(115200);
}

// -----------------------------------------------------------------------------
void run (
    AccelStepper stepper,
    byte          pinLimitSwitch )
{

    if (digitalRead (pinLimitSwitch) == Off)
        stepper.runSpeed ();
    else
        stepper.stop ();
}

//==============================================================================
void
drop (
    byte pinSolenoid )
{
    digitalWrite (pinSolenoid, On);
    delay (500);
    digitalWrite (pinSolenoid, Off);
}

//==============================================================================
void loop()
{
    currentMillis = millis();    // capture the latest value of millis()

    if (currentMillis - previousMillis >= Interval) {
        drop (solenoidA);
        drop (solenoidB);

        previousMillis = currentMillis;
    }

    run (StepperA, limitSwitchA);
    run (StepperB, limitSwitchB);
}