Program: 86553
Project: 86553
Buggy source:
public DefaultMapObject(boolean loadAssets,MapObjectDefinition definition,MapObjectData data){
  super(data);
  this.loadAssets=loadAssets;
  this.pos.set(data.x,data.y);
  this.surfaceType=SurfaceType.fromString(definition.surfaceType);
  Rectangle rect=new Rectangle((int)data.width,(int)data.height);
  rect.setLocation(pos);
  if (definition.width != 0 && definition.height != 0) {
    rect.setSize((int)definition.width,(int)definition.height);
  }
  this.onTouched=definition.onTouched;
  this.onLoad=definition.onLoad;
  this.rotation=data.rotation;
  float rotRadians=(float)Math.toRadians(data.rotation);
  this.obb=new OBB(rect);
  this.obb.rotateAround(pos,rotRadians);
  if (definition.allowRotation) {
    int length=(int)this.obb.length();
    this.bounds.setSize(length,length);
    this.bounds.centerAround(this.obb.getCenter());
  }
 else {
    this.bounds.set(rect);
  }
  this.heightMask=definition.heightMask;
  this.isCollidable=definition.isCollidable;
  if (data.properties != null) {
    if (data.properties.containsKeyByString("String_Node_Str")) {
      String heightMask=data.properties.getString("String_Node_Str");
      this.heightMask=Integer.valueOf(heightMask);
    }
    if (data.properties.containsKeyByString("String_Node_Str")) {
      this.isCollidable=true;
    }
    if (data.properties.containsKeyByString("String_Node_Str")) {
      this.onTouched=LeoObject.valueOf(data.properties.getString("String_Node_Str"));
    }
    if (data.properties.containsKeyByString("String_Node_Str")) {
      this.onLoad=LeoObject.valueOf(data.properties.getString("String_Node_Str"));
    }
  }
  if (loadAssets && definition.image != null) {
    ImageData image=definition.image;
    TextureRegion texture=TextureUtil.loadImage(image.path);
    if (image.width > 0) {
      texture=TextureUtil.subImage(texture,image.x,image.y,image.width,image.height);
    }
    this.sprite=new Sprite(texture);
    this.sprite.setSize(rect.width,rect.height);
    this.sprite.setOrigin(0,0);
    this.sprite.setRotation(data.rotation);
  }
}

Fixed version (ground truth):
public DefaultMapObject(boolean loadAssets,MapObjectDefinition definition,MapObjectData data){
  super(data);
  this.loadAssets=loadAssets;
  this.pos.set(data.x,data.y);
  this.surfaceType=SurfaceType.fromString(definition.surfaceType);
  Rectangle rect=new Rectangle((int)data.width,(int)data.height);
  rect.setLocation(pos);
  if (definition.width != 0 && definition.height != 0) {
    rect.setSize((int)definition.width,(int)definition.height);
  }
  float imageWidth=rect.width;
  float imageHeight=rect.height;
  if (definition.imageWidth != 0) {
    imageWidth=definition.imageWidth;
  }
  if (definition.imageHeight != 0) {
    imageHeight=definition.imageHeight;
  }
  this.centerSprite=definition.centerSprite;
  this.onTouched=definition.onTouched;
  this.onLoad=definition.onLoad;
  this.rotation=data.rotation;
  float rotRadians=(float)Math.toRadians(data.rotation);
  this.obb=new OBB(rect);
  this.obb.rotateAround(pos,rotRadians);
  if (definition.allowRotation) {
    int length=(int)this.obb.length();
    this.bounds.setSize(length,length);
    this.bounds.centerAround(this.obb.getCenter());
  }
 else {
    this.bounds.set(rect);
  }
  this.heightMask=definition.heightMask;
  this.isCollidable=definition.isCollidable;
  this.isForeground=definition.isForeground;
  if (data.properties != null) {
    if (data.properties.containsKeyByString("String_Node_Str")) {
      String heightMask=data.properties.getString("String_Node_Str");
      this.heightMask=Integer.valueOf(heightMask);
    }
    if (data.properties.containsKeyByString("String_Node_Str")) {
      this.isCollidable=true;
    }
    if (data.properties.containsKeyByString("String_Node_Str")) {
      this.onTouched=LeoObject.valueOf(data.properties.getString("String_Node_Str"));
    }
    if (data.properties.containsKeyByString("String_Node_Str")) {
      this.onLoad=LeoObject.valueOf(data.properties.getString("String_Node_Str"));
    }
  }
  if (loadAssets && definition.image != null) {
    ImageData image=definition.image;
    TextureRegion texture=TextureUtil.loadImage(image.path);
    if (image.width > 0) {
      texture=TextureUtil.subImage(texture,image.x,image.y,image.width,image.height);
    }
    this.sprite=new Sprite(texture);
    this.sprite.setSize(imageWidth,imageHeight);
    this.sprite.setOrigin(0,0);
    this.sprite.setRotation(data.rotation);
  }
}