anchor.diff:              innerConstraints = new BoxConstraints(maxHeight: constraints.maxHeight,
                                                     minWidth: spaceForChild,
                                                     maxWidth: spaceForChild);
  -            child.layout(innerConstraints, parentUsesSize: true);
  -            usedSpace += child.size.width;
  -            crossSize = math.max(crossSize, child.size.height);
               break;
             case FlexDirection.vertical:
               innerConstraints = new BoxConstraints(minHeight: spaceForChild,
                                                     maxHeight: spaceForChild,
                                                     maxWidth: constraints.maxWidth);
  -            child.layout(innerConstraints, parentUsesSize: true);
  -            usedSpace += child.size.height;
  -            crossSize = math.max(crossSize, child.size.width);
               break;
           }
  +        child.layout(innerConstraints, parentUsesSize: true);
  +        usedSpace += _getMainSize(child);
  +        crossSize = math.max(crossSize, _getCrossSize(child));
         }
         child = child.parentData.nextSibling;
       }
  
positive.code:     switch (_direction) {
        case FlexDirection.horizontal:
          size = constraints.constrain(new Size(mainSize, crossSize));
          break;
        case FlexDirection.vertical:
          size = constraints.constrain(new Size(crossSize, mainSize));
          break;
      }
  
      // Position elements. For now, center the flex items in the cross direction
      double mainDimPosition = leadingSpace;
      child = firstChild;
      while (child != null) {
        switch (_direction) {
          case FlexDirection.horizontal:
            child.parentData.position = new Point(mainDimPosition, size.height / 2.0 - child.size.height / 2.0);
            mainDimPosition += child.size.width;
            break;
          case FlexDirection.vertical:
            child.parentData.position = new Point(size.width / 2.0 - child.size.width / 2.0, mainDimPosition);
            mainDimPosition += child.size.height;
            break;
        }
        mainDimPosition += betweenSpace;
        child = child.parentData.nextSibling;
      }
    }
  
negative.code:         BoxConstraints innerConstraints = new BoxConstraints(maxHeight: constraints.maxHeight,
                                                               maxWidth: constraints.maxWidth);
          child.layout(innerConstraints, parentUsesSize: true);
          freeSpace -= _getMainSize(child);
          crossSize = math.max(crossSize, _getCrossSize(child));
        }
        child = child.parentData.nextSibling;
      }
  