@SuppressWarnings("unchecked")
 void doHierarchial(Consumer<? super AWTGrid> consumer) {
   consumer.accept(this);
   if (hasStateChildrenImpl()) {
     for (Grid g : getChildren()) {
       ((AWTGrid) g).doHierarchial(consumer);
     }
   }
 }
  private void evalutateChangeImpl(AWTGrid sender, PlayContext context) {
    if (isGreatParentImpl()) {
      return;
    }
    GridCoord coord = sender.getCoord();
    if (coord == null) {
      return;
    }
    GridCollection peers = getPeers();
    AWTGrid grid = (AWTGrid) peers.getGrid(coord);
    final boolean locked = (grid.getStates() & States.LOCKED) != 0;
    peers.forEach(
        new Consumer<Grid>() {

          @Override
          public void accept(Grid t) {
            if (t instanceof AWTGrid) {
              AWTGrid g = ((AWTGrid) t);
              g.doHierarchial(
                  new Consumer<AWTGrid>() {

                    @Override
                    public void accept(AWTGrid t) {
                      t.setStatePlayableAndFilteredImpl(locked);
                    }
                  });
            }
          }
        });
    if (!locked) {
      grid.doHierarchial(
          new Consumer<AWTGrid>() {

            @Override
            public void accept(AWTGrid t) {
              t.setStatePlayableAndFilteredImpl(true);
            }
          });
    }
  }