package com.jetbrains.python.debugger;

public abstract class PySourcePosition {

  private final String file;
  private final int line;

  protected PySourcePosition(final String file, final int line) {
    this.file = file;
    this.line = line;
  }

  public String getFile() {
    return file;
  }

  public int getLine() {
    return line;
  }

  @Override
  public boolean equals(Object o) {
    if (this == o) return true;
    if (!(o instanceof PySourcePosition)) return false;

    PySourcePosition that = (PySourcePosition)o;

    if (line != that.line) return false;
    if (file != null ? !file.equals(that.file) : that.file != null) return false;

    return true;
  }

  @Override
  public int hashCode() {
    int result = file != null ? file.hashCode() : 0;
    result = 31 * result + line;
    return result;
  }

}

@@ -33,16 +33,63 @@
 ugger;%0A%0A
+import com.intellij.openapi.util.io.FileUtil;%0A%0A
 public a
@@ -260,20 +260,54 @@
 .file = 
+FileUtil.toSystemIndependentName(
 file
+)
 ;%0A    th
@@ -905,10 +905,113 @@
 t;%0A  %7D%0A%0A
+  @Override%0A  public String toString() %7B%0A    return %22PySourcePosition(%22 + file + %22:%22 + line + %22)%22;%0A  %7D%0A
 %7D%0A

toString(), normalize filenames