static <A> L<A> matrixToList(Matrix<A> m) {
  if (m == null) null;
  int w = m.getWidth(), h = m.getHeight(), n = w*h;
  
  ret new RandomAccessAbstractList<A>() {
    public int size() { ret n; }
    
    public A get(int i) {
      ret m.get(i % w, i / w);
    }
    
    public A set(int i, A val) {
      A old = m.get(i % w, i % h);
      m.set(i % w, i / w, val);
      ret old;
    }
  };
}