anchor.diff:      PhysicsBody bodyA,
       PhysicsBody bodyB,
       this.worldAnchor, {
  -      double lowerAngle: 0.0,
  -      double upperAngle: 0.0,
  -      bool enableLimit: false
  +      this.lowerAngle: 0.0,
  +      this.upperAngle: 0.0,
  +      this.enableLimit: false
       }) : super(bodyA, bodyB) {
  -    this.lowerAngle = lowerAngle;
  -    this.upperAngle = upperAngle;
  -    this.enableLimit = enableLimit;
  -
       _completeCreation();
     }
   
  -  Point worldAnchor;
  -  double lowerAngle;
  -  double upperAngle;
  -  bool enableLimit;
  +  final Point worldAnchor;
  +  final double lowerAngle;
  +  final double upperAngle;
  +  final bool enableLimit;
   
     box2d.Joint _createB2Joint(PhysicsNode physicsNode) {
       // Create Joint Definition
  
positive.code:   PhysicsJointPrismatic(
      PhysicsBody bodyA,
      PhysicsBody bodyB,
      this.axis) : super(bodyA, bodyB) {
      _completeCreation();
    }
  
  
negative.code:     return physicsNode.b2World.createJoint(b2Def);
    }
  }
  
  class PhysicsJointPulley extends PhysicsJoint {
    PhysicsJointPulley(
      PhysicsBody bodyA,
      PhysicsBody bodyB,
      this.groundAnchorA,
      this.groundAnchorB,
      this.anchorA,
      this.anchorB,
      this.ratio
    ) : super(bodyA, bodyB) {
      _completeCreation();
    }
  
    final Point groundAnchorA;
    final Point groundAnchorB;
    final Point anchorA;
    final Point anchorB;
    final double ratio;
  
    box2d.Joint _createB2Joint(PhysicsNode physicsNode) {
      box2d.PulleyJointDef b2Def = new box2d.PulleyJointDef();
      b2Def.initialize(
        bodyA._body,
        bodyB._body,
        _convertPosToVec(groundAnchorA, physicsNode),
        _convertPosToVec(groundAnchorB, physicsNode),
        _convertPosToVec(anchorA, physicsNode),
        _convertPosToVec(anchorB, physicsNode),
        ratio
      );
      return physicsNode.b2World.createJoint(b2Def);
    }
  }
  
  Vector2 _convertPosToVec(Point pt, PhysicsNode physicsNode) {
    return new Vector2(
      pt.x / physicsNode.b2WorldToNodeConversionFactor,
      pt.y / physicsNode.b2WorldToNodeConversionFactor
    );
  }
  