protected String isValidPlacement(final Collection<Unit> units,final Territory at,final PlayerID player){
  String error=playerHasEnoughUnits(units,at,player);
  if (error != null) {
    return error;
  }
  error=canProduce(at,units,player);
  if (error != null) {
    return error;
  }
  error=checkProduction(at,units,player);
  if (error != null) {
    return error;
  }
  error=canUnitsBePlaced(at,units,player);
  if (error != null) {
    return error;
  }
  return null;
}

protected String isValidPlacement ( final Collection < Unit > units , final Territory at , final PlayerID player ) { String error = playerHasEnoughUnits ( units , at , player ) ; if ( error != null ) { return error ; } error = canProduce ( at , units , player ) ; if ( error != null ) { return error ; } error = checkProduction ( at , units , player ) ; if ( error != null ) { return error ; } error = canUnitsBePlaced ( at , units , player ) ; if ( error != null ) { return error ; } return null ; }
subclasses can over ride this to change the way placements are made .
