anchor.diff:    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
  
positive.code:     b2Def.lowerAngle = lowerAngle;
      b2Def.upperAngle = upperAngle;
  
      // Create joint
      return physicsNode.b2World.createJoint(b2Def);
    }
  
negative.code:       this.upperAngle: 0.0,
        this.enableLimit: false,
        PhysicsJointBreakCallback breakCallback,
        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();
    }
  
  