diff --git a/src/main/java/org/orekit/rugged/adjustment/AdjustmentContext.java b/src/main/java/org/orekit/rugged/adjustment/AdjustmentContext.java
index 9a8fd9aa0caffef278e7416c9322c9902d95fda5..e21b4624ad1a55487d9d837389b2264954d49561 100644
--- a/src/main/java/org/orekit/rugged/adjustment/AdjustmentContext.java
+++ b/src/main/java/org/orekit/rugged/adjustment/AdjustmentContext.java
@@ -119,8 +119,8 @@ public class AdjustmentContext {
     public Optimum estimateFreeParameters(final Collection<String> ruggedNameList, final int maxEvaluations,
                                           final double parametersConvergenceThreshold) {
 
-        final List<Rugged> ruggedList = new ArrayList<Rugged>();
-        final List<LineSensor> selectedSensors = new ArrayList<LineSensor>();
+        final List<Rugged> ruggedList = new ArrayList<>();
+        final List<LineSensor> selectedSensors = new ArrayList<>();
         for (String ruggedName : ruggedNameList) {
             final Rugged rugged = this.viewingModel.get(ruggedName);
             if (rugged == null) {
diff --git a/src/main/java/org/orekit/rugged/adjustment/GroundOptimizationProblemBuilder.java b/src/main/java/org/orekit/rugged/adjustment/GroundOptimizationProblemBuilder.java
index 9cdb4ef3d96f026fccd593a003ec6e76952a5ad1..28335b2a7c9458d39e3f5ec82f378cef28a97157 100644
--- a/src/main/java/org/orekit/rugged/adjustment/GroundOptimizationProblemBuilder.java
+++ b/src/main/java/org/orekit/rugged/adjustment/GroundOptimizationProblemBuilder.java
@@ -93,7 +93,7 @@ public class GroundOptimizationProblemBuilder extends OptimizationProblemBuilder
     protected void initMapping() {
 
         final String ruggedName = rugged.getName();
-        this.sensorToGroundMappings = new ArrayList<SensorToGroundMapping>();
+        this.sensorToGroundMappings = new ArrayList<>();
         for (final LineSensor lineSensor : this.getSensors()) {
             final SensorToGroundMapping mapping = this.getMeasurements().getGroundMapping(ruggedName, lineSensor.getName());
             if (mapping != null) {
diff --git a/src/main/java/org/orekit/rugged/adjustment/InterSensorsOptimizationProblemBuilder.java b/src/main/java/org/orekit/rugged/adjustment/InterSensorsOptimizationProblemBuilder.java
index f6d76a1dcf76ad47bcf3fa4e40f046b42fbed482..fdddbed9ba287cd1f9b99e5032600f71e5ca64ae 100644
--- a/src/main/java/org/orekit/rugged/adjustment/InterSensorsOptimizationProblemBuilder.java
+++ b/src/main/java/org/orekit/rugged/adjustment/InterSensorsOptimizationProblemBuilder.java
@@ -90,7 +90,7 @@ public class InterSensorsOptimizationProblemBuilder extends OptimizationProblemB
     @Override
     protected void initMapping() {
 
-        this.sensorToSensorMappings = new ArrayList<SensorToSensorMapping>();
+        this.sensorToSensorMappings = new ArrayList<>();
 
         for (final String ruggedNameA : this.ruggedMap.keySet()) {
             for (final String ruggedNameB : this.ruggedMap.keySet()) {
diff --git a/src/main/java/org/orekit/rugged/adjustment/measurements/SensorToGroundMapping.java b/src/main/java/org/orekit/rugged/adjustment/measurements/SensorToGroundMapping.java
index b3160e77820397533b69ce4bc5c2f05fa8208a6c..623befb6ddcffebf8061acaf685b193469a55f7a 100644
--- a/src/main/java/org/orekit/rugged/adjustment/measurements/SensorToGroundMapping.java
+++ b/src/main/java/org/orekit/rugged/adjustment/measurements/SensorToGroundMapping.java
@@ -56,7 +56,7 @@ public class SensorToGroundMapping {
     public SensorToGroundMapping(final String ruggedName, final String sensorName) {
 
         this.sensorName     = sensorName;
-        this.groundMapping = new SensorMapping<GeodeticPoint>(sensorName, ruggedName);
+        this.groundMapping = new SensorMapping<>(sensorName, ruggedName);
     }
 
     /** Get the name of the sensor to which mapping applies.
diff --git a/src/main/java/org/orekit/rugged/adjustment/measurements/SensorToSensorMapping.java b/src/main/java/org/orekit/rugged/adjustment/measurements/SensorToSensorMapping.java
index d9ee26b314f2069bfaa1baf6e004b69542fa60b3..bef0ceda2a9aac4261f827a977998227fb5f2ac5 100644
--- a/src/main/java/org/orekit/rugged/adjustment/measurements/SensorToSensorMapping.java
+++ b/src/main/java/org/orekit/rugged/adjustment/measurements/SensorToSensorMapping.java
@@ -82,11 +82,11 @@ public class SensorToSensorMapping {
                                  final String sensorNameB, final String ruggedNameB,
                                  final double bodyConstraintWeight) {
 
-        this.interMapping = new SensorMapping<SensorPixel>(sensorNameA, ruggedNameA);
+        this.interMapping = new SensorMapping<>(sensorNameA, ruggedNameA);
         this.sensorNameB = sensorNameB;
         this.ruggedNameB = ruggedNameB;
-        this.losDistances = new ArrayList<Double>();
-        this.bodyDistances = new ArrayList<Double>();
+        this.losDistances = new ArrayList<>();
+        this.bodyDistances = new ArrayList<>();
         this.bodyConstraintWeight = bodyConstraintWeight;
     }
 
diff --git a/src/main/java/org/orekit/rugged/api/RuggedBuilder.java b/src/main/java/org/orekit/rugged/api/RuggedBuilder.java
index 80569d701a8743d7693b5a0fb8a295a0eed15cba..51e74f94eb8866bfea481418fc49daa7796f4eac 100644
--- a/src/main/java/org/orekit/rugged/api/RuggedBuilder.java
+++ b/src/main/java/org/orekit/rugged/api/RuggedBuilder.java
@@ -171,7 +171,7 @@ public class RuggedBuilder {
      * </p>
      */
     public RuggedBuilder() {
-        sensors                     = new ArrayList<LineSensor>();
+        sensors                     = new ArrayList<>();
         constantElevation           = Double.NaN;
         lightTimeCorrection         = true;
         aberrationOfLightCorrection = true;
@@ -728,9 +728,9 @@ public class RuggedBuilder {
 
         // extract position/attitude samples from propagator
         final List<TimeStampedPVCoordinates> positionsVelocities =
-                new ArrayList<TimeStampedPVCoordinates>();
+                new ArrayList<>();
         final List<TimeStampedAngularCoordinates> quaternions =
-                new ArrayList<TimeStampedAngularCoordinates>();
+                new ArrayList<>();
         propagator.getMultiplexer().add(interpolationStep,
             currentState -> {
                 final AbsoluteDate  date = currentState.getDate();
diff --git a/src/main/java/org/orekit/rugged/errors/Dump.java b/src/main/java/org/orekit/rugged/errors/Dump.java
index 6dfe527de133949882914ee21473d1f03981a24a..23de046a43df8ef4e44870b1c61d81e5407f734f 100644
--- a/src/main/java/org/orekit/rugged/errors/Dump.java
+++ b/src/main/java/org/orekit/rugged/errors/Dump.java
@@ -75,8 +75,8 @@ class Dump {
      */
     Dump(final PrintWriter writer) {
         this.writer          = writer;
-        this.tiles           = new ArrayList<DumpedTileData>();
-        this.sensors         = new ArrayList<DumpedSensorData>();
+        this.tiles           = new ArrayList<>();
+        this.sensors         = new ArrayList<>();
         this.algorithmDumped = false;
         this.ellipsoidDumped = false;
         this.tranformsDumped = null;
diff --git a/src/main/java/org/orekit/rugged/errors/DumpManager.java b/src/main/java/org/orekit/rugged/errors/DumpManager.java
index fe3ebf8a104364dcb1e5132444885694bfb0667c..932e9b83318673f82e966dc1c295c9823cb30a51 100644
--- a/src/main/java/org/orekit/rugged/errors/DumpManager.java
+++ b/src/main/java/org/orekit/rugged/errors/DumpManager.java
@@ -47,7 +47,7 @@ import org.orekit.time.AbsoluteDate;
 public class DumpManager {
 
     /** Dump file (default initial value is null, i.e. nothing is dumped). */
-    private static final ThreadLocal<Dump> DUMP = new ThreadLocal<Dump>();
+    private static final ThreadLocal<Dump> DUMP = new ThreadLocal<>();
 
     /** Boolean to check if the dump is suspended. */
     private static boolean isSuspended = false;
diff --git a/src/main/java/org/orekit/rugged/errors/DumpReplayer.java b/src/main/java/org/orekit/rugged/errors/DumpReplayer.java
index 9cd58b48cecd2dc20c8cd616f6a281ce857d8039..a4bbf7aef10ba239eb1b5748d3378fbd5218e1d5 100644
--- a/src/main/java/org/orekit/rugged/errors/DumpReplayer.java
+++ b/src/main/java/org/orekit/rugged/errors/DumpReplayer.java
@@ -283,9 +283,9 @@ public class DumpReplayer {
     /** Simple constructor.
      */
     public DumpReplayer() {
-        tiles   = new ArrayList<ParsedTile>();
-        sensors = new ArrayList<ParsedSensor>();
-        calls   = new ArrayList<DumpedCall>();
+        tiles   = new ArrayList<>();
+        sensors = new ArrayList<>();
+        calls   = new ArrayList<>();
     }
 
     /** Parse a dump file.
@@ -350,8 +350,8 @@ public class DumpReplayer {
 
             // build missing transforms by extrapolating the parsed ones
             final int n = (int) FastMath.ceil(maxDate.durationFrom(minDate) / tStep);
-            final List<Transform> b2iList = new ArrayList<Transform>(n);
-            final List<Transform> s2iList = new ArrayList<Transform>(n);
+            final List<Transform> b2iList = new ArrayList<>(n);
+            final List<Transform> s2iList = new ArrayList<>(n);
             for (int i = 0; i < n; ++i) {
                 if (bodyToInertial.containsKey(i)) {
                     // the i-th transform was dumped
@@ -385,7 +385,7 @@ public class DumpReplayer {
             final ByteArrayInputStream  bis = new ByteArrayInputStream(bos.toByteArray());
             builder.setTrajectoryAndTimeSpan(bis);
 
-            final List<SensorMeanPlaneCrossing> planeCrossings = new ArrayList<SensorMeanPlaneCrossing>();
+            final List<SensorMeanPlaneCrossing> planeCrossings = new ArrayList<>();
             for (final ParsedSensor parsedSensor : sensors) {
                 final LineSensor sensor = new LineSensor(parsedSensor.name,
                                                          parsedSensor,
diff --git a/src/main/java/org/orekit/rugged/errors/RuggedMessages.java b/src/main/java/org/orekit/rugged/errors/RuggedMessages.java
index 56c1e45998701a3c13cad30cbd9503d176d12e8a..966539c0f71431477a3c9ff63d7b08008772c5ac 100644
--- a/src/main/java/org/orekit/rugged/errors/RuggedMessages.java
+++ b/src/main/java/org/orekit/rugged/errors/RuggedMessages.java
@@ -116,8 +116,7 @@ public enum RuggedMessages implements Localizable {
                     ResourceBundle.getBundle(RESOURCE_BASE_NAME, locale, new UTF8Control());
             if (bundle.getLocale().getLanguage().equals(locale.getLanguage())) {
                 final String translated = bundle.getString(name());
-                if (translated != null &&
-                    translated.length() > 0 &&
+                if (translated.length() > 0 &&
                     !translated.toLowerCase(locale).contains("missing translation")) {
                     // the value of the resource is the translated format
                     return translated;
diff --git a/src/main/java/org/orekit/rugged/intersection/BasicScanAlgorithm.java b/src/main/java/org/orekit/rugged/intersection/BasicScanAlgorithm.java
index 6d72cd96ba4d5ce28f294e4e3d026c7539868813..97abdbd181153bc5e28a63613315a0c691eb468d 100644
--- a/src/main/java/org/orekit/rugged/intersection/BasicScanAlgorithm.java
+++ b/src/main/java/org/orekit/rugged/intersection/BasicScanAlgorithm.java
@@ -61,7 +61,7 @@ public class BasicScanAlgorithm implements IntersectionAlgorithm {
      * @param maxCachedTiles maximum number of tiles stored in the cache
      */
     public BasicScanAlgorithm(final TileUpdater updater, final int maxCachedTiles) {
-        this.cache = new TilesCache<SimpleTile>(new SimpleTileFactory(), updater, maxCachedTiles);
+        this.cache = new TilesCache<>(new SimpleTileFactory(), updater, maxCachedTiles);
         this.hMin  = Double.POSITIVE_INFINITY;
         this.hMax  = Double.NEGATIVE_INFINITY;
         this.algorithmId = AlgorithmId.BASIC_SLOW_EXHAUSTIVE_SCAN_FOR_TESTS_ONLY;
@@ -81,7 +81,7 @@ public class BasicScanAlgorithm implements IntersectionAlgorithm {
         double maxLatitude  = Double.NaN;
         double minLongitude = Double.NaN;
         double maxLongitude = Double.NaN;
-        final List<SimpleTile> scannedTiles = new ArrayList<SimpleTile>();
+        final List<SimpleTile> scannedTiles = new ArrayList<>();
         double centralLongitude = Double.NaN;
         for (boolean changedMinMax = true; changedMinMax; changedMinMax = checkMinMax(scannedTiles)) {
 
diff --git a/src/main/java/org/orekit/rugged/intersection/duvenhage/DuvenhageAlgorithm.java b/src/main/java/org/orekit/rugged/intersection/duvenhage/DuvenhageAlgorithm.java
index 98b912a87741bda93875460ded3dcac911c6b388..0beb019796a0aadb4c8bad6a2d2c259f58bde490 100644
--- a/src/main/java/org/orekit/rugged/intersection/duvenhage/DuvenhageAlgorithm.java
+++ b/src/main/java/org/orekit/rugged/intersection/duvenhage/DuvenhageAlgorithm.java
@@ -74,7 +74,7 @@ public class DuvenhageAlgorithm implements IntersectionAlgorithm {
      */
     public DuvenhageAlgorithm(final TileUpdater updater, final int maxCachedTiles,
                               final boolean flatBody) {
-        this.cache = new TilesCache<MinMaxTreeTile>(new MinMaxTreeTileFactory(), updater, maxCachedTiles);
+        this.cache = new TilesCache<>(new MinMaxTreeTileFactory(), updater, maxCachedTiles);
         this.flatBody = flatBody;
         this.algorithmId = flatBody ? AlgorithmId.DUVENHAGE_FLAT_BODY : AlgorithmId.DUVENHAGE;
     }
diff --git a/src/main/java/org/orekit/rugged/linesensor/SensorMeanPlaneCrossing.java b/src/main/java/org/orekit/rugged/linesensor/SensorMeanPlaneCrossing.java
index 6c0f9e2a294fe60caae55c8c416a5bf7dc73b78a..23c0b9d6be6baf41082d03a3ded0e16fa9063b97 100644
--- a/src/main/java/org/orekit/rugged/linesensor/SensorMeanPlaneCrossing.java
+++ b/src/main/java/org/orekit/rugged/linesensor/SensorMeanPlaneCrossing.java
@@ -152,7 +152,7 @@ public class SensorMeanPlaneCrossing {
 
         this.meanPlaneNormal             = meanPlaneNormal;
 
-        this.cachedResults               = new ArrayList<CrossingResult>(CACHED_RESULTS);
+        this.cachedResults               = new ArrayList<>(CACHED_RESULTS);
         cachedResults.forEach(crossingResult -> {
             if (crossingResult != null && this.cachedResults.size() < CACHED_RESULTS) {
                 this.cachedResults.add(crossingResult);
diff --git a/src/main/java/org/orekit/rugged/los/LOSBuilder.java b/src/main/java/org/orekit/rugged/los/LOSBuilder.java
index 916a9a5da0e11049061fb048520dcbedce83787f..3bc88855a3279cc0b235ea0c414d2e9c41a8fe3e 100644
--- a/src/main/java/org/orekit/rugged/los/LOSBuilder.java
+++ b/src/main/java/org/orekit/rugged/los/LOSBuilder.java
@@ -63,7 +63,7 @@ public class LOSBuilder {
      */
     public LOSBuilder(final List<Vector3D> rawLOS) {
         this.rawLOS          = rawLOS;
-        this.transforms      = new ArrayList<LOSTransform>();
+        this.transforms      = new ArrayList<>();
         this.timeIndependent = true;
     }
 
@@ -158,7 +158,7 @@ public class LOSBuilder {
                 this.raw[i] = raw.get(i);
             }
 
-            this.transforms = new ArrayList<LOSTransform>(transforms);
+            this.transforms = new ArrayList<>(transforms);
 
         }
 
diff --git a/src/main/java/org/orekit/rugged/refraction/MultiLayerModel.java b/src/main/java/org/orekit/rugged/refraction/MultiLayerModel.java
index 3f13936794e64168282414e2a785145421a0d676..4aeeeeeffc5d9427a1710b42413be43e284d41ed 100644
--- a/src/main/java/org/orekit/rugged/refraction/MultiLayerModel.java
+++ b/src/main/java/org/orekit/rugged/refraction/MultiLayerModel.java
@@ -59,7 +59,7 @@ public class MultiLayerModel extends AtmosphericRefraction {
 
         this.ellipsoid = ellipsoid;
 
-        this.refractionLayers = new ArrayList<ConstantRefractionLayer>(15);
+        this.refractionLayers = new ArrayList<>(15);
         this.refractionLayers.add(new ConstantRefractionLayer(100000.00, 1.000000));
         this.refractionLayers.add(new ConstantRefractionLayer( 50000.00, 1.000000));
         this.refractionLayers.add(new ConstantRefractionLayer( 40000.00, 1.000001));
diff --git a/src/main/java/org/orekit/rugged/utils/RoughVisibilityEstimator.java b/src/main/java/org/orekit/rugged/utils/RoughVisibilityEstimator.java
index 35fd2ab67f5ef297ba5e09a61a61d54218c7cc7b..ed20cac42e61feb05207de051c12479e6286f00b 100644
--- a/src/main/java/org/orekit/rugged/utils/RoughVisibilityEstimator.java
+++ b/src/main/java/org/orekit/rugged/utils/RoughVisibilityEstimator.java
@@ -72,7 +72,7 @@ public class RoughVisibilityEstimator {
         // project spacecraft position-velocity to ground
         final Frame bodyFrame = ellipsoid.getBodyFrame();
         final int n = positionsVelocities.size();
-        this.pvGround = new ArrayList<TimeStampedPVCoordinates>(n);
+        this.pvGround = new ArrayList<>(n);
         for (final TimeStampedPVCoordinates pv : positionsVelocities) {
             final Transform t = frame.getTransformTo(bodyFrame, pv.getDate());
             pvGround.add(ellipsoid.projectToGround(t.transformPVCoordinates(pv), bodyFrame));
diff --git a/src/main/java/org/orekit/rugged/utils/SpacecraftToObservedBody.java b/src/main/java/org/orekit/rugged/utils/SpacecraftToObservedBody.java
index 526fcf9f85e2ba9aafd77ea5ab2ab20733a498a6..449cb9024596a53337264308b3984871f229420c 100644
--- a/src/main/java/org/orekit/rugged/utils/SpacecraftToObservedBody.java
+++ b/src/main/java/org/orekit/rugged/utils/SpacecraftToObservedBody.java
@@ -121,17 +121,17 @@ public class SpacecraftToObservedBody implements Serializable {
 
         // set up the cache for position-velocities
         final TimeStampedCache<TimeStampedPVCoordinates> pvCache =
-                new ImmutableTimeStampedCache<TimeStampedPVCoordinates>(pvInterpolationNumber, positionsVelocities);
+                new ImmutableTimeStampedCache<>(pvInterpolationNumber, positionsVelocities);
 
         // set up the cache for attitudes
         final TimeStampedCache<TimeStampedAngularCoordinates> aCache =
-                new ImmutableTimeStampedCache<TimeStampedAngularCoordinates>(aInterpolationNumber, quaternions);
+                new ImmutableTimeStampedCache<>(aInterpolationNumber, quaternions);
 
         final int n = (int) FastMath.ceil(maxDate.durationFrom(minDate) / tStep);
         this.tStep          = tStep;
-        this.bodyToInertial = new ArrayList<Transform>(n);
-        this.inertialToBody = new ArrayList<Transform>(n);
-        this.scToInertial   = new ArrayList<Transform>(n);
+        this.bodyToInertial = new ArrayList<>(n);
+        this.inertialToBody = new ArrayList<>(n);
+        this.scToInertial   = new ArrayList<>(n);
         for (AbsoluteDate date = minDate; bodyToInertial.size() < n; date = date.shiftedBy(tStep)) {
 
             // interpolate position-velocity, allowing slight extrapolation near the boundaries
@@ -200,7 +200,7 @@ public class SpacecraftToObservedBody implements Serializable {
         this.bodyToInertial     = bodyToInertial;
         this.scToInertial       = scToInertial;
 
-        this.inertialToBody = new ArrayList<Transform>(bodyToInertial.size());
+        this.inertialToBody = new ArrayList<>(bodyToInertial.size());
         for (final Transform b2i : bodyToInertial) {
             inertialToBody.add(b2i.getInverse());
         }