JAL-1807 still testing
[jalviewjs.git] / bin / jalview / util / MapList.js
index e7281ac..ff777cc 100644 (file)
-Clazz.declarePackage ("jalview.util");
-Clazz.load (["java.util.ArrayList"], "jalview.util.MapList", ["java.lang.StringBuilder", "java.util.Arrays"], function () {
-c$ = Clazz.decorateAsClass (function () {
-this.fromShifts = null;
-this.toShifts = null;
-this.fromRatio = 0;
-this.toRatio = 0;
-this.fromLowest = 0;
-this.fromHighest = 0;
-this.toLowest = 0;
-this.toHighest = 0;
-Clazz.instantialize (this, arguments);
-}, jalview.util, "MapList");
-Clazz.prepareFields (c$, function () {
-this.fromShifts =  new java.util.ArrayList ();
-this.toShifts =  new java.util.ArrayList ();
-});
-Clazz.overrideMethod (c$, "equals", 
-function (o) {
-if (o == null || !(Clazz.instanceOf (o, jalview.util.MapList))) {
-return false;
-}var obj = o;
-if (obj === this) {
-return true;
-}if (obj.fromRatio != this.fromRatio || obj.toRatio != this.toRatio || obj.fromShifts == null || obj.toShifts == null) {
-return false;
-}return java.util.Arrays.deepEquals (this.fromShifts.toArray (), obj.fromShifts.toArray ()) && java.util.Arrays.deepEquals (this.toShifts.toArray (), obj.toShifts.toArray ());
-}, "~O");
-Clazz.defineMethod (c$, "getFromRanges", 
-function () {
-return this.fromShifts;
-});
-Clazz.defineMethod (c$, "getToRanges", 
-function () {
-return this.toShifts;
-});
-c$.getRanges = Clazz.defineMethod (c$, "getRanges", 
-function (shifts) {
-var rnges =  Clazz.newIntArray (2 * shifts.size (), 0);
-var i = 0;
-for (var r, $r = shifts.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) {
-rnges[i++] = r[0];
-rnges[i++] = r[1];
-}
-return rnges;
-}, "java.util.List");
-Clazz.defineMethod (c$, "getFromRatio", 
-function () {
-return this.fromRatio;
-});
-Clazz.defineMethod (c$, "getToRatio", 
-function () {
-return this.toRatio;
-});
-Clazz.defineMethod (c$, "getFromLowest", 
-function () {
-return this.fromLowest;
-});
-Clazz.defineMethod (c$, "getFromHighest", 
-function () {
-return this.fromHighest;
-});
-Clazz.defineMethod (c$, "getToLowest", 
-function () {
-return this.toLowest;
-});
-Clazz.defineMethod (c$, "getToHighest", 
-function () {
-return this.toHighest;
-});
-Clazz.makeConstructor (c$, 
-function (from, to, fromRatio, toRatio) {
-this.fromRatio = fromRatio;
-this.toRatio = toRatio;
-this.fromLowest = from[0];
-this.fromHighest = from[1];
-for (var i = 0; i < from.length; i += 2) {
-this.fromLowest = Math.min (this.fromLowest, from[i]);
-this.fromHighest = Math.max (this.fromHighest, from[i + 1]);
-this.fromShifts.add ( Clazz.newIntArray (-1, [from[i], from[i + 1]]));
-}
-this.toLowest = to[0];
-this.toHighest = to[1];
-for (var i = 0; i < to.length; i += 2) {
-this.toLowest = Math.min (this.toLowest, to[i]);
-this.toHighest = Math.max (this.toHighest, to[i + 1]);
-this.toShifts.add ( Clazz.newIntArray (-1, [to[i], to[i + 1]]));
-}
-}, "~A,~A,~N,~N");
-Clazz.makeConstructor (c$, 
-function (map) {
-this.fromLowest = map.fromLowest;
-this.fromHighest = map.fromHighest;
-this.toLowest = map.toLowest;
-this.toHighest = map.toHighest;
-this.fromRatio = map.fromRatio;
-this.toRatio = map.toRatio;
-if (map.fromShifts != null) {
-for (var r, $r = map.fromShifts.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) {
-this.fromShifts.add ( Clazz.newIntArray (-1, [r[0], r[1]]));
-}
-}if (map.toShifts != null) {
-for (var r, $r = map.toShifts.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) {
-this.toShifts.add ( Clazz.newIntArray (-1, [r[0], r[1]]));
-}
-}}, "jalview.util.MapList");
-Clazz.makeConstructor (c$, 
-function (fromRange, toRange, fromRatio, toRatio) {
-this.fromShifts = fromRange;
-this.toShifts = toRange;
-this.fromRatio = fromRatio;
-this.toRatio = toRatio;
-this.fromLowest = 2147483647;
-this.fromHighest = 0;
-for (var range, $range = fromRange.iterator (); $range.hasNext () && ((range = $range.next ()) || true);) {
-this.fromLowest = Math.min (this.fromLowest, range[0]);
-this.fromHighest = Math.max (this.fromHighest, range[1]);
-}
-this.toLowest = 2147483647;
-this.toHighest = 0;
-for (var range, $range = toRange.iterator (); $range.hasNext () && ((range = $range.next ()) || true);) {
-this.toLowest = Math.min (this.toLowest, range[0]);
-this.toHighest = Math.max (this.toHighest, range[1]);
-}
-}, "java.util.List,java.util.List,~N,~N");
-Clazz.defineMethod (c$, "makeFromMap", 
-function () {
-return this.posMap (this.fromShifts, this.fromRatio, this.toShifts, this.toRatio);
-});
-Clazz.defineMethod (c$, "makeToMap", 
-function () {
-return this.posMap (this.toShifts, this.toRatio, this.fromShifts, this.fromRatio);
-});
-Clazz.defineMethod (c$, "posMap", 
-($fz = function (shiftTo, ratio, shiftFrom, toRatio) {
-var iv = 0;
-var ivSize = shiftTo.size ();
-if (iv >= ivSize) {
-return null;
-}var intv = shiftTo.get (iv++);
-var from = intv[0];
-var to = intv[1];
-if (from > to) {
-from = intv[1];
-to = intv[0];
-}while (iv < ivSize) {
-intv = shiftTo.get (iv++);
-if (intv[0] < from) {
-from = intv[0];
-}if (intv[1] < from) {
-from = intv[1];
-}if (intv[0] > to) {
-to = intv[0];
-}if (intv[1] > to) {
-to = intv[1];
-}}
-var tF = 0;
-var tT = 0;
-var mp =  Clazz.newIntArray (to - from + 2, 0);
-for (var i = 0; i < mp.length; i++) {
-var m = jalview.util.MapList.shift (i + from, shiftTo, ratio, shiftFrom, toRatio);
-if (m != null) {
-if (i == 0) {
-tF = tT = m[0];
-} else {
-if (m[0] < tF) {
-tF = m[0];
-}if (m[0] > tT) {
-tT = m[0];
-}}}mp[i] = m;
-}
-var map =  Clazz.newArray (-1, [ Clazz.newIntArray (-1, [from, to, tF, tT]),  Clazz.newIntArray (to - from + 2, 0)]);
-map[0][2] = tF;
-map[0][3] = tT;
-for (var i = 0; i < mp.length; i++) {
-if (mp[i] != null) {
-map[1][i] = mp[i][0] - tF;
-} else {
-map[1][i] = -1;
-}}
-return map;
-}, $fz.isPrivate = true, $fz), "java.util.List,~N,java.util.List,~N");
-Clazz.defineMethod (c$, "shiftFrom", 
-function (pos) {
-return jalview.util.MapList.shift (pos, this.fromShifts, this.fromRatio, this.toShifts, this.toRatio);
-}, "~N");
-Clazz.defineMethod (c$, "shiftTo", 
-function (pos) {
-return jalview.util.MapList.shift (pos, this.toShifts, this.toRatio, this.fromShifts, this.fromRatio);
-}, "~N");
-c$.shift = Clazz.defineMethod (c$, "shift", 
-function (pos, shiftTo, fromRatio, shiftFrom, toRatio) {
-var fromCount = jalview.util.MapList.countPos (shiftTo, pos);
-if (fromCount == null) {
-return null;
-}var fromRemainder = (fromCount[0] - 1) % fromRatio;
-var toCount = 1 + ((Clazz.doubleToInt ((fromCount[0] - 1) / fromRatio)) * toRatio);
-var toPos = jalview.util.MapList.countToPos (shiftFrom, toCount);
-if (toPos == null) {
-return null;
-}return  Clazz.newIntArray (-1, [toPos[0], fromRemainder, toPos[1]]);
-}, "~N,java.util.List,~N,java.util.List,~N");
-c$.countPos = Clazz.defineMethod (c$, "countPos", 
-function (shiftTo, pos) {
-var count = 0;
-var intv;
-var iv = 0;
-var ivSize = shiftTo.size ();
-while (iv < ivSize) {
-intv = shiftTo.get (iv++);
-if (intv[0] <= intv[1]) {
-if (pos >= intv[0] && pos <= intv[1]) {
-return  Clazz.newIntArray (-1, [count + pos - intv[0] + 1, 1]);
-} else {
-count += intv[1] - intv[0] + 1;
-}} else {
-if (pos >= intv[1] && pos <= intv[0]) {
-return  Clazz.newIntArray (-1, [count + intv[0] - pos + 1, -1]);
-} else {
-count += intv[0] - intv[1] + 1;
-}}}
-return null;
-}, "java.util.List,~N");
-c$.countToPos = Clazz.defineMethod (c$, "countToPos", 
-function (shiftFrom, pos) {
-var count = 0;
-var diff = 0;
-var iv = 0;
-var ivSize = shiftFrom.size ();
-var intv =  Clazz.newIntArray (-1, [0, 0]);
-while (iv < ivSize) {
-intv = shiftFrom.get (iv++);
-diff = intv[1] - intv[0];
-if (diff >= 0) {
-if (pos <= count + 1 + diff) {
-return  Clazz.newIntArray (-1, [pos - count - 1 + intv[0], 1]);
-} else {
-count += 1 + diff;
-}} else {
-if (pos <= count + 1 - diff) {
-return  Clazz.newIntArray (-1, [intv[0] - (pos - count - 1), -1]);
-} else {
-count += 1 - diff;
-}}}
-return null;
-}, "java.util.List,~N");
-Clazz.defineMethod (c$, "locateInFrom", 
-function (start, end) {
-var fromStart = this.shiftTo (start);
-var fromEnd = this.shiftTo (end);
-return jalview.util.MapList.getIntervals (this.fromShifts, fromStart, fromEnd, this.fromRatio);
-}, "~N,~N");
-Clazz.defineMethod (c$, "locateInTo", 
-function (start, end) {
-var toStart = this.shiftFrom (start);
-var toEnd = this.shiftFrom (end);
-return jalview.util.MapList.getIntervals (this.toShifts, toStart, toEnd, this.toRatio);
-}, "~N,~N");
-c$.getIntervals = Clazz.defineMethod (c$, "getIntervals", 
-function (shiftFrom, fromStart, fromEnd, fromRatio2) {
-if (fromStart == null || fromEnd == null) {
-return null;
-}var startpos;
-var endpos;
-startpos = fromStart[0];
-endpos = fromEnd[0];
-var endindx = (fromRatio2 - 1);
-var intv = 0;
-var intvSize = shiftFrom.size ();
-var iv;
-var i = 0;
-var fs = -1;
-var fe_s = -1;
-var fe = -1;
-while (intv < intvSize && (fs == -1 || fe == -1)) {
-iv = shiftFrom.get (intv++);
-if (fe_s > -1) {
-endpos = iv[0];
-endindx--;
-}if (iv[0] <= iv[1]) {
-if (fs == -1 && startpos >= iv[0] && startpos <= iv[1]) {
-fs = i;
-}if (endpos >= iv[0] && endpos <= iv[1]) {
-if (fe_s == -1) {
-fe_s = i;
-}if (fe_s != -1) {
-if (endpos + endindx <= iv[1]) {
-fe = i;
-endpos = endpos + endindx;
-} else {
-endindx -= iv[1] - endpos;
-}}}} else {
-if (fs == -1 && startpos <= iv[0] && startpos >= iv[1]) {
-fs = i;
-}if (endpos <= iv[0] && endpos >= iv[1]) {
-if (fe_s == -1) {
-fe_s = i;
-}if (fe_s != -1) {
-if (endpos - endindx >= iv[1]) {
-fe = i;
-endpos = endpos - endindx;
-} else {
-endindx -= endpos - iv[1];
-}}}}i++;
-}
-if (fs == fe && fe == -1) {
-return null;
-}var ranges =  new java.util.ArrayList ();
-if (fs <= fe) {
-intv = fs;
-i = fs;
-iv = shiftFrom.get (intv++);
-iv =  Clazz.newIntArray (-1, [iv[0], iv[1]]);
-if (i == fs) {
-iv[0] = startpos;
-}while (i != fe) {
-ranges.add (iv);
-iv = shiftFrom.get (intv++);
-iv =  Clazz.newIntArray (-1, [iv[0], iv[1]]);
-i++;
-}
-if (i == fe) {
-iv[1] = endpos;
-}ranges.add (iv);
-} else {
-i = shiftFrom.size () - 1;
-while (i > fs) {
-i--;
-}
-iv = shiftFrom.get (i);
-iv =  Clazz.newIntArray (-1, [iv[1], iv[0]]);
-if (i == fs) {
-iv[0] = startpos;
-}while (--i != fe) {
-ranges.add (iv);
-iv = shiftFrom.get (i);
-iv =  Clazz.newIntArray (-1, [iv[1], iv[0]]);
-}
-if (i == fe) {
-iv[1] = endpos;
-}ranges.add (iv);
-}var range = null;
-if (ranges != null && ranges.size () > 0) {
-range =  Clazz.newIntArray (ranges.size () * 2, 0);
-intv = 0;
-intvSize = ranges.size ();
-i = 0;
-while (intv < intvSize) {
-iv = ranges.get (intv);
-range[i++] = iv[0];
-range[i++] = iv[1];
-ranges.set (intv++, null);
-}
-}return range;
-}, "java.util.List,~A,~A,~N");
-Clazz.defineMethod (c$, "getToPosition", 
-function (mpos) {
-var mp = this.shiftTo (mpos);
-if (mp != null) {
-return mp[0];
-}return mpos;
-}, "~N");
-Clazz.defineMethod (c$, "getToWord", 
-function (mpos) {
-var mp = this.shiftTo (mpos);
-if (mp != null) {
-return  Clazz.newIntArray (-1, [mp[0], mp[0] + mp[2] * (this.getFromRatio () - 1)]);
-}return null;
-}, "~N");
-Clazz.defineMethod (c$, "getMappedPosition", 
-function (pos) {
-var mp = this.shiftFrom (pos);
-if (mp != null) {
-return mp[0];
-}return pos;
-}, "~N");
-Clazz.defineMethod (c$, "getMappedWord", 
-function (pos) {
-var mp = this.shiftFrom (pos);
-if (mp != null) {
-return  Clazz.newIntArray (-1, [mp[0], mp[0] + mp[2] * (this.getToRatio () - 1)]);
-}return null;
-}, "~N");
-Clazz.defineMethod (c$, "getInverse", 
-function () {
-return  new jalview.util.MapList (this.getToRanges (), this.getFromRanges (), this.getToRatio (), this.getFromRatio ());
-});
-Clazz.defineMethod (c$, "containsEither", 
-function (local, map) {
-if (local) {
-return ((this.getFromLowest () >= map.getFromLowest () && this.getFromHighest () <= map.getFromHighest ()) || (this.getFromLowest () <= map.getFromLowest () && this.getFromHighest () >= map.getFromHighest ()));
-} else {
-return ((this.getToLowest () >= map.getToLowest () && this.getToHighest () <= map.getToHighest ()) || (this.getToLowest () <= map.getToLowest () && this.getToHighest () >= map.getToHighest ()));
-}}, "~B,jalview.util.MapList");
-Clazz.overrideMethod (c$, "toString", 
-function () {
-var sb =  new StringBuilder (64);
-sb.append ("From (").append (this.fromRatio).append (":").append (this.toRatio).append (") [");
-for (var shift, $shift = this.fromShifts.iterator (); $shift.hasNext () && ((shift = $shift.next ()) || true);) {
-sb.append (" ").append (java.util.Arrays.toString (shift));
-}
-sb.append (" ] To [");
-for (var shift, $shift = this.toShifts.iterator (); $shift.hasNext () && ((shift = $shift.next ()) || true);) {
-sb.append (" ").append (java.util.Arrays.toString (shift));
-}
-sb.append (" ]");
-return sb.toString ();
-});
-});
+Clazz.declarePackage ("jalview.util");\r
+Clazz.load (["java.util.ArrayList"], "jalview.util.MapList", ["java.lang.StringBuilder", "java.util.Arrays"], function () {\r
+c$ = Clazz.decorateAsClass (function () {\r
+this.fromShifts = null;\r
+this.toShifts = null;\r
+this.fromRatio = 0;\r
+this.toRatio = 0;\r
+this.fromLowest = 0;\r
+this.fromHighest = 0;\r
+this.toLowest = 0;\r
+this.toHighest = 0;\r
+Clazz.instantialize (this, arguments);\r
+}, jalview.util, "MapList");\r
+Clazz.prepareFields (c$, function () {\r
+this.fromShifts =  new java.util.ArrayList ();\r
+this.toShifts =  new java.util.ArrayList ();\r
+});\r
+Clazz.overrideMethod (c$, "equals", \r
+function (o) {\r
+if (o == null || !(Clazz.instanceOf (o, jalview.util.MapList))) {\r
+return false;\r
+}var obj = o;\r
+if (obj === this) {\r
+return true;\r
+}if (obj.fromRatio != this.fromRatio || obj.toRatio != this.toRatio || obj.fromShifts == null || obj.toShifts == null) {\r
+return false;\r
+}return java.util.Arrays.deepEquals (this.fromShifts.toArray (), obj.fromShifts.toArray ()) && java.util.Arrays.deepEquals (this.toShifts.toArray (), obj.toShifts.toArray ());\r
+}, "~O");\r
+Clazz.defineMethod (c$, "getFromRanges", \r
+function () {\r
+return this.fromShifts;\r
+});\r
+Clazz.defineMethod (c$, "getToRanges", \r
+function () {\r
+return this.toShifts;\r
+});\r
+c$.getRanges = Clazz.defineMethod (c$, "getRanges", \r
+function (shifts) {\r
+var rnges =  Clazz.newIntArray (2 * shifts.size (), 0);\r
+var i = 0;\r
+for (var r, $r = shifts.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) {\r
+rnges[i++] = r[0];\r
+rnges[i++] = r[1];\r
+}\r
+return rnges;\r
+}, "java.util.List");\r
+Clazz.defineMethod (c$, "getFromRatio", \r
+function () {\r
+return this.fromRatio;\r
+});\r
+Clazz.defineMethod (c$, "getToRatio", \r
+function () {\r
+return this.toRatio;\r
+});\r
+Clazz.defineMethod (c$, "getFromLowest", \r
+function () {\r
+return this.fromLowest;\r
+});\r
+Clazz.defineMethod (c$, "getFromHighest", \r
+function () {\r
+return this.fromHighest;\r
+});\r
+Clazz.defineMethod (c$, "getToLowest", \r
+function () {\r
+return this.toLowest;\r
+});\r
+Clazz.defineMethod (c$, "getToHighest", \r
+function () {\r
+return this.toHighest;\r
+});\r
+Clazz.makeConstructor (c$, \r
+function (from, to, fromRatio, toRatio) {\r
+this.fromRatio = fromRatio;\r
+this.toRatio = toRatio;\r
+this.fromLowest = from[0];\r
+this.fromHighest = from[1];\r
+for (var i = 0; i < from.length; i += 2) {\r
+this.fromLowest = Math.min (this.fromLowest, from[i]);\r
+this.fromHighest = Math.max (this.fromHighest, from[i + 1]);\r
+this.fromShifts.add ( Clazz.newIntArray (-1, [from[i], from[i + 1]]));\r
+}\r
+this.toLowest = to[0];\r
+this.toHighest = to[1];\r
+for (var i = 0; i < to.length; i += 2) {\r
+this.toLowest = Math.min (this.toLowest, to[i]);\r
+this.toHighest = Math.max (this.toHighest, to[i + 1]);\r
+this.toShifts.add ( Clazz.newIntArray (-1, [to[i], to[i + 1]]));\r
+}\r
+}, "~A,~A,~N,~N");\r
+Clazz.makeConstructor (c$, \r
+function (map) {\r
+this.fromLowest = map.fromLowest;\r
+this.fromHighest = map.fromHighest;\r
+this.toLowest = map.toLowest;\r
+this.toHighest = map.toHighest;\r
+this.fromRatio = map.fromRatio;\r
+this.toRatio = map.toRatio;\r
+if (map.fromShifts != null) {\r
+for (var r, $r = map.fromShifts.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) {\r
+this.fromShifts.add ( Clazz.newIntArray (-1, [r[0], r[1]]));\r
+}\r
+}if (map.toShifts != null) {\r
+for (var r, $r = map.toShifts.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) {\r
+this.toShifts.add ( Clazz.newIntArray (-1, [r[0], r[1]]));\r
+}\r
+}}, "jalview.util.MapList");\r
+Clazz.makeConstructor (c$, \r
+function (fromRange, toRange, fromRatio, toRatio) {\r
+this.fromShifts = fromRange;\r
+this.toShifts = toRange;\r
+this.fromRatio = fromRatio;\r
+this.toRatio = toRatio;\r
+this.fromLowest = 2147483647;\r
+this.fromHighest = 0;\r
+for (var range, $range = fromRange.iterator (); $range.hasNext () && ((range = $range.next ()) || true);) {\r
+this.fromLowest = Math.min (this.fromLowest, range[0]);\r
+this.fromHighest = Math.max (this.fromHighest, range[1]);\r
+}\r
+this.toLowest = 2147483647;\r
+this.toHighest = 0;\r
+for (var range, $range = toRange.iterator (); $range.hasNext () && ((range = $range.next ()) || true);) {\r
+this.toLowest = Math.min (this.toLowest, range[0]);\r
+this.toHighest = Math.max (this.toHighest, range[1]);\r
+}\r
+}, "java.util.List,java.util.List,~N,~N");\r
+Clazz.defineMethod (c$, "makeFromMap", \r
+function () {\r
+return this.posMap (this.fromShifts, this.fromRatio, this.toShifts, this.toRatio);\r
+});\r
+Clazz.defineMethod (c$, "makeToMap", \r
+function () {\r
+return this.posMap (this.toShifts, this.toRatio, this.fromShifts, this.fromRatio);\r
+});\r
+Clazz.defineMethod (c$, "posMap", \r
+($fz = function (shiftTo, ratio, shiftFrom, toRatio) {\r
+var iv = 0;\r
+var ivSize = shiftTo.size ();\r
+if (iv >= ivSize) {\r
+return null;\r
+}var intv = shiftTo.get (iv++);\r
+var from = intv[0];\r
+var to = intv[1];\r
+if (from > to) {\r
+from = intv[1];\r
+to = intv[0];\r
+}while (iv < ivSize) {\r
+intv = shiftTo.get (iv++);\r
+if (intv[0] < from) {\r
+from = intv[0];\r
+}if (intv[1] < from) {\r
+from = intv[1];\r
+}if (intv[0] > to) {\r
+to = intv[0];\r
+}if (intv[1] > to) {\r
+to = intv[1];\r
+}}\r
+var tF = 0;\r
+var tT = 0;\r
+var mp =  Clazz.newIntArray (to - from + 2, 0);\r
+for (var i = 0; i < mp.length; i++) {\r
+var m = jalview.util.MapList.shift (i + from, shiftTo, ratio, shiftFrom, toRatio);\r
+if (m != null) {\r
+if (i == 0) {\r
+tF = tT = m[0];\r
+} else {\r
+if (m[0] < tF) {\r
+tF = m[0];\r
+}if (m[0] > tT) {\r
+tT = m[0];\r
+}}}mp[i] = m;\r
+}\r
+var map =  Clazz.newArray (-1, [ Clazz.newIntArray (-1, [from, to, tF, tT]),  Clazz.newIntArray (to - from + 2, 0)]);\r
+map[0][2] = tF;\r
+map[0][3] = tT;\r
+for (var i = 0; i < mp.length; i++) {\r
+if (mp[i] != null) {\r
+map[1][i] = mp[i][0] - tF;\r
+} else {\r
+map[1][i] = -1;\r
+}}\r
+return map;\r
+}, $fz.isPrivate = true, $fz), "java.util.List,~N,java.util.List,~N");\r
+Clazz.defineMethod (c$, "shiftFrom", \r
+function (pos) {\r
+return jalview.util.MapList.shift (pos, this.fromShifts, this.fromRatio, this.toShifts, this.toRatio);\r
+}, "~N");\r
+Clazz.defineMethod (c$, "shiftTo", \r
+function (pos) {\r
+return jalview.util.MapList.shift (pos, this.toShifts, this.toRatio, this.fromShifts, this.fromRatio);\r
+}, "~N");\r
+c$.shift = Clazz.defineMethod (c$, "shift", \r
+function (pos, shiftTo, fromRatio, shiftFrom, toRatio) {\r
+var fromCount = jalview.util.MapList.countPos (shiftTo, pos);\r
+if (fromCount == null) {\r
+return null;\r
+}var fromRemainder = (fromCount[0] - 1) % fromRatio;\r
+var toCount = 1 + ((Clazz.doubleToInt ((fromCount[0] - 1) / fromRatio)) * toRatio);\r
+var toPos = jalview.util.MapList.countToPos (shiftFrom, toCount);\r
+if (toPos == null) {\r
+return null;\r
+}return  Clazz.newIntArray (-1, [toPos[0], fromRemainder, toPos[1]]);\r
+}, "~N,java.util.List,~N,java.util.List,~N");\r
+c$.countPos = Clazz.defineMethod (c$, "countPos", \r
+function (shiftTo, pos) {\r
+var count = 0;\r
+var intv;\r
+var iv = 0;\r
+var ivSize = shiftTo.size ();\r
+while (iv < ivSize) {\r
+intv = shiftTo.get (iv++);\r
+if (intv[0] <= intv[1]) {\r
+if (pos >= intv[0] && pos <= intv[1]) {\r
+return  Clazz.newIntArray (-1, [count + pos - intv[0] + 1, 1]);\r
+} else {\r
+count += intv[1] - intv[0] + 1;\r
+}} else {\r
+if (pos >= intv[1] && pos <= intv[0]) {\r
+return  Clazz.newIntArray (-1, [count + intv[0] - pos + 1, -1]);\r
+} else {\r
+count += intv[0] - intv[1] + 1;\r
+}}}\r
+return null;\r
+}, "java.util.List,~N");\r
+c$.countToPos = Clazz.defineMethod (c$, "countToPos", \r
+function (shiftFrom, pos) {\r
+var count = 0;\r
+var diff = 0;\r
+var iv = 0;\r
+var ivSize = shiftFrom.size ();\r
+var intv =  Clazz.newIntArray (-1, [0, 0]);\r
+while (iv < ivSize) {\r
+intv = shiftFrom.get (iv++);\r
+diff = intv[1] - intv[0];\r
+if (diff >= 0) {\r
+if (pos <= count + 1 + diff) {\r
+return  Clazz.newIntArray (-1, [pos - count - 1 + intv[0], 1]);\r
+} else {\r
+count += 1 + diff;\r
+}} else {\r
+if (pos <= count + 1 - diff) {\r
+return  Clazz.newIntArray (-1, [intv[0] - (pos - count - 1), -1]);\r
+} else {\r
+count += 1 - diff;\r
+}}}\r
+return null;\r
+}, "java.util.List,~N");\r
+Clazz.defineMethod (c$, "locateInFrom", \r
+function (start, end) {\r
+var fromStart = this.shiftTo (start);\r
+var fromEnd = this.shiftTo (end);\r
+return jalview.util.MapList.getIntervals (this.fromShifts, fromStart, fromEnd, this.fromRatio);\r
+}, "~N,~N");\r
+Clazz.defineMethod (c$, "locateInTo", \r
+function (start, end) {\r
+var toStart = this.shiftFrom (start);\r
+var toEnd = this.shiftFrom (end);\r
+return jalview.util.MapList.getIntervals (this.toShifts, toStart, toEnd, this.toRatio);\r
+}, "~N,~N");\r
+c$.getIntervals = Clazz.defineMethod (c$, "getIntervals", \r
+function (shiftFrom, fromStart, fromEnd, fromRatio2) {\r
+if (fromStart == null || fromEnd == null) {\r
+return null;\r
+}var startpos;\r
+var endpos;\r
+startpos = fromStart[0];\r
+endpos = fromEnd[0];\r
+var endindx = (fromRatio2 - 1);\r
+var intv = 0;\r
+var intvSize = shiftFrom.size ();\r
+var iv;\r
+var i = 0;\r
+var fs = -1;\r
+var fe_s = -1;\r
+var fe = -1;\r
+while (intv < intvSize && (fs == -1 || fe == -1)) {\r
+iv = shiftFrom.get (intv++);\r
+if (fe_s > -1) {\r
+endpos = iv[0];\r
+endindx--;\r
+}if (iv[0] <= iv[1]) {\r
+if (fs == -1 && startpos >= iv[0] && startpos <= iv[1]) {\r
+fs = i;\r
+}if (endpos >= iv[0] && endpos <= iv[1]) {\r
+if (fe_s == -1) {\r
+fe_s = i;\r
+}if (fe_s != -1) {\r
+if (endpos + endindx <= iv[1]) {\r
+fe = i;\r
+endpos = endpos + endindx;\r
+} else {\r
+endindx -= iv[1] - endpos;\r
+}}}} else {\r
+if (fs == -1 && startpos <= iv[0] && startpos >= iv[1]) {\r
+fs = i;\r
+}if (endpos <= iv[0] && endpos >= iv[1]) {\r
+if (fe_s == -1) {\r
+fe_s = i;\r
+}if (fe_s != -1) {\r
+if (endpos - endindx >= iv[1]) {\r
+fe = i;\r
+endpos = endpos - endindx;\r
+} else {\r
+endindx -= endpos - iv[1];\r
+}}}}i++;\r
+}\r
+if (fs == fe && fe == -1) {\r
+return null;\r
+}var ranges =  new java.util.ArrayList ();\r
+if (fs <= fe) {\r
+intv = fs;\r
+i = fs;\r
+iv = shiftFrom.get (intv++);\r
+iv =  Clazz.newIntArray (-1, [iv[0], iv[1]]);\r
+if (i == fs) {\r
+iv[0] = startpos;\r
+}while (i != fe) {\r
+ranges.add (iv);\r
+iv = shiftFrom.get (intv++);\r
+iv =  Clazz.newIntArray (-1, [iv[0], iv[1]]);\r
+i++;\r
+}\r
+if (i == fe) {\r
+iv[1] = endpos;\r
+}ranges.add (iv);\r
+} else {\r
+i = shiftFrom.size () - 1;\r
+while (i > fs) {\r
+i--;\r
+}\r
+iv = shiftFrom.get (i);\r
+iv =  Clazz.newIntArray (-1, [iv[1], iv[0]]);\r
+if (i == fs) {\r
+iv[0] = startpos;\r
+}while (--i != fe) {\r
+ranges.add (iv);\r
+iv = shiftFrom.get (i);\r
+iv =  Clazz.newIntArray (-1, [iv[1], iv[0]]);\r
+}\r
+if (i == fe) {\r
+iv[1] = endpos;\r
+}ranges.add (iv);\r
+}var range = null;\r
+if (ranges != null && ranges.size () > 0) {\r
+range =  Clazz.newIntArray (ranges.size () * 2, 0);\r
+intv = 0;\r
+intvSize = ranges.size ();\r
+i = 0;\r
+while (intv < intvSize) {\r
+iv = ranges.get (intv);\r
+range[i++] = iv[0];\r
+range[i++] = iv[1];\r
+ranges.set (intv++, null);\r
+}\r
+}return range;\r
+}, "java.util.List,~A,~A,~N");\r
+Clazz.defineMethod (c$, "getToPosition", \r
+function (mpos) {\r
+var mp = this.shiftTo (mpos);\r
+if (mp != null) {\r
+return mp[0];\r
+}return mpos;\r
+}, "~N");\r
+Clazz.defineMethod (c$, "getToWord", \r
+function (mpos) {\r
+var mp = this.shiftTo (mpos);\r
+if (mp != null) {\r
+return  Clazz.newIntArray (-1, [mp[0], mp[0] + mp[2] * (this.getFromRatio () - 1)]);\r
+}return null;\r
+}, "~N");\r
+Clazz.defineMethod (c$, "getMappedPosition", \r
+function (pos) {\r
+var mp = this.shiftFrom (pos);\r
+if (mp != null) {\r
+return mp[0];\r
+}return pos;\r
+}, "~N");\r
+Clazz.defineMethod (c$, "getMappedWord", \r
+function (pos) {\r
+var mp = this.shiftFrom (pos);\r
+if (mp != null) {\r
+return  Clazz.newIntArray (-1, [mp[0], mp[0] + mp[2] * (this.getToRatio () - 1)]);\r
+}return null;\r
+}, "~N");\r
+Clazz.defineMethod (c$, "getInverse", \r
+function () {\r
+return  new jalview.util.MapList (this.getToRanges (), this.getFromRanges (), this.getToRatio (), this.getFromRatio ());\r
+});\r
+Clazz.defineMethod (c$, "containsEither", \r
+function (local, map) {\r
+if (local) {\r
+return ((this.getFromLowest () >= map.getFromLowest () && this.getFromHighest () <= map.getFromHighest ()) || (this.getFromLowest () <= map.getFromLowest () && this.getFromHighest () >= map.getFromHighest ()));\r
+} else {\r
+return ((this.getToLowest () >= map.getToLowest () && this.getToHighest () <= map.getToHighest ()) || (this.getToLowest () <= map.getToLowest () && this.getToHighest () >= map.getToHighest ()));\r
+}}, "~B,jalview.util.MapList");\r
+Clazz.overrideMethod (c$, "toString", \r
+function () {\r
+var sb =  new StringBuilder (64);\r
+sb.append ("From (").append (this.fromRatio).append (":").append (this.toRatio).append (") [");\r
+for (var shift, $shift = this.fromShifts.iterator (); $shift.hasNext () && ((shift = $shift.next ()) || true);) {\r
+sb.append (" ").append (java.util.Arrays.toString (shift));\r
+}\r
+sb.append (" ] To [");\r
+for (var shift, $shift = this.toShifts.iterator (); $shift.hasNext () && ((shift = $shift.next ()) || true);) {\r
+sb.append (" ").append (java.util.Arrays.toString (shift));\r
+}\r
+sb.append (" ]");\r
+return sb.toString ();\r
+});\r
+});\r