anchor.diff:        this.upperAngle: 0.0,
         this.enableLimit: false,
         PhysicsJointBreakCallback breakCallback,
  -      double breakingForce
  +      double breakingForce,
  +      bool enableMotor: false,
  +      double motorSpeed: 0.0,
  +      double maxMotorTorque: 0.0
       }) : super(bodyA, bodyB, breakingForce, breakCallback) {
  +    _enableMotor = enableMotor;
  +    _motorSpeed = motorSpeed;
  +    _maxMotorTorque = maxMotorTorque;
       _completeCreation();
     }
   
  
positive.code:     b2Def.lowerAngle = lowerAngle;
      b2Def.upperAngle = upperAngle;
  
      // Create joint
      return physicsNode.b2World.createJoint(b2Def);
    }
  
negative.code:   final double lowerAngle;
    final double upperAngle;
    final bool enableLimit;
  
    bool _enableMotor;
  
    bool get enableMotor => _enableMotor;
  
    set enableMotor(bool enableMotor) {
      _enableMotor = enableMotor;
      if (_joint != null) {
        box2d.RevoluteJoint revoluteJoint = _joint;
        revoluteJoint.enableMotor(enableMotor);
      }
    }
  
    double _motorSpeed;
  
    double get motorSpeed => _motorSpeed;
  
    set motorSpeed(double motorSpeed) {
      _motorSpeed = motorSpeed;
      if (_joint != null) {
        box2d.RevoluteJoint revoluteJoint = _joint;
        revoluteJoint.setMotorSpeed(radians(motorSpeed));
      }
    }
  
    double _maxMotorTorque;
  
    double get maxMotorTorque => _maxMotorTorque;
  
    set maxMotorTorque(double maxMotorTorque) {
      _maxMotorTorque = maxMotorTorque;
      if (_joint != null) {
        box2d.RevoluteJoint revoluteJoint = _joint;
        revoluteJoint.setMaxMotorTorque(maxMotorTorque);
      }
    }
  
    box2d.Joint _createB2Joint(PhysicsWorld physicsNode) {
      // Create Joint Definition
  