import java.util.Objects;

public class Route
{
    public Route (Coordinate start, Coordinate end)
    {
        this(start, end, 1);
    }

    public Route (Coordinate start, Coordinate end, int steps)
    {
        _start = start;
        _end = end;
        _numberOfSteps = steps;
    }

    public final Coordinate getStart ()
    {
        return _start;
    }

    public final Coordinate getEnd ()
    {
        return _end;
    }

    public final int numberOfSteps ()
    {
        return _numberOfSteps;
    }
    
    @Override
    public String toString ()
    {
        return "< "+_start+", "+_end+", "+_numberOfSteps+" >";
    }

    @Override
    public int hashCode ()
    {
        return Objects.hash(_start, _end);
    }

    @Override
    public boolean equals (Object obj)
    {
        if (obj == null)
            return false;

        if (this == obj)
            return true;
        
        if (getClass() == obj.getClass())
        {
            Route temp = (Route) obj;

            if (_start.equals(temp._start) && (_end.equals(temp._end)))
                return true;
        }

        return false;
    }

    private Coordinate _start;
    private Coordinate _end;
    private int _numberOfSteps;
}
@@ -125,19 +125,22 @@
 , end, 1
+, 0
 );%0A
-
     %7D%0A%0A 
@@ -199,16 +199,27 @@
 nt steps
+, int level
 )%0A    %7B%0A
@@ -290,24 +290,48 @@
 ps = steps;%0A
+        _level = level;%0A
     %7D%0A%0A    p
@@ -509,32 +509,32 @@
 fSteps ()%0A    %7B%0A
-
         return _
@@ -553,16 +553,85 @@
 s;%0A    %7D
+%0A%0A    public final int getLevel ()%0A    %7B%0A        return _level;%0A    %7D
 %0A    %0A  
@@ -1339,9 +1339,33 @@
 fSteps;%0A
+    private int _level;%0A
 %7D

Update Route.java