protected override Size ArrangeOverride(Size finalSize) {
var x = PositionX;
if (double.IsNaN(x)) {
x = DetermineX();
}
var y = PositionY;
if (double.IsNaN(y)) {
y = DetermineY();
}
var adornerWidth = DetermineWidth();
var adornerHeight = DetermineHeight();
_child.Arrange(new Rect(x, y, adornerWidth, adornerHeight));
return finalSize;
}