code: public void setPosition(byte[] fields, byte vert, byte horiz) {
          for (byte field : fields) {
              setVisible(field, true);
              Position p = new Position(vert, horiz);
              byte[] p1f = getPosition(field);
              Position p1 = p1f == null ? null : new Position(p1f[0], p1f[1]);    // fix HHR
              if (!p.equals(p1)) {
                  Iterator it = m_fieldsPosition.values().iterator();
                  Byte B = field;
                  while (it.hasNext()) {
                      Vector v = (Vector) it.next();
                      if (v.contains(B))
                          v.remove(B);
                  }
                  //don't know why get(p) doesn't work, p.toString() is ok
                  if (m_fieldsPosition.get(p) == null)
                      m_fieldsPosition.put(p, new Vector());
                  Vector v = (Vector) m_fieldsPosition.get(p);
                  v.add(B);
              }
          }
  		notifyListeners();
  	}
docs: Sets the position of several fields
  
  @param fields
  array of {@link ScoreElements} constants
  @param vert
  one of {@link VerticalPosition} constants
  @param horiz
  one of {@link HorizontalPosition} constants