// convenience method to build a visualization from a claim
  // visualizationType determines the style (gold blocks, silver, red, diamond, etc)
  public static Visualization FromClaim(
      Claim claim, int height, VisualizationType visualizationType, Location locality) {
    // visualize only top level claims
    if (claim.parent != null) {
      return FromClaim(claim.parent, height, visualizationType, locality);
    }

    Visualization visualization = new Visualization();

    // add subdivisions first
    for (int i = 0; i < claim.children.size(); i++) {
      visualization.addClaimElements(
          claim.children.get(i), height, VisualizationType.Subdivision, locality);
    }

    // add top level last so that it takes precedence (it shows on top when the child claim
    // boundaries overlap with its boundaries)
    visualization.addClaimElements(claim, height, visualizationType, locality);

    return visualization;
  }
  public static void Apply(Player player, Visualization visualization, boolean CancelCurrent) {
    PlayerData playerData = GriefPrevention.instance.dataStore.getPlayerData(player.getName());

    // if he has any current visualization, clear it first
    if (playerData.ActiveVisualizations.size() > 0 && CancelCurrent) {
      Visualization.Revert(player);
    }

    // if he's online, create a task to send him the visualization in about half a second
    if (player.isOnline()) {
      GriefPrevention.instance
          .getServer()
          .getScheduler()
          .scheduleSyncDelayedTask(
              GriefPrevention.instance,
              new VisualizationApplicationTask(player, playerData, visualization),
              10L);
    }
  }