public boolean equals(Object other) {

    if (!(other instanceof GroundVehiclePG)) {
      return false;
    }

    GroundVehiclePG otherGroundVehiclePG = (GroundVehiclePG) other;

    if (getRoadSurfaceRequirements() == null) {
      if (otherGroundVehiclePG.getRoadSurfaceRequirements() != null) {
        return false;
      }
    } else if (!(getRoadSurfaceRequirements()
        .equals(otherGroundVehiclePG.getRoadSurfaceRequirements()))) {
      return false;
    }

    if (getMeanDistanceBetweenRepairs() == null) {
      if (otherGroundVehiclePG.getMeanDistanceBetweenRepairs() != null) {
        return false;
      }
    } else if (!(getMeanDistanceBetweenRepairs()
        .equals(otherGroundVehiclePG.getMeanDistanceBetweenRepairs()))) {
      return false;
    }

    if (getVehicleType() == null) {
      if (otherGroundVehiclePG.getVehicleType() != null) {
        return false;
      }
    } else if (!(getVehicleType().equals(otherGroundVehiclePG.getVehicleType()))) {
      return false;
    }

    if (!(getCrewRequirements() == otherGroundVehiclePG.getCrewRequirements())) {
      return false;
    }

    return true;
  }
 public GroundVehiclePGImpl(GroundVehiclePG original) {
   theRoadSurfaceRequirements = original.getRoadSurfaceRequirements();
   theMeanDistanceBetweenRepairs = original.getMeanDistanceBetweenRepairs();
   theVehicleType = original.getVehicleType();
   theCrewRequirements = original.getCrewRequirements();
 }