docs: private <E> Object parse( String s, Class fclz ) {
      if( fclz.equals(String.class) ) return s; // Strings already the right primitive type
      if( fclz.isArray() ) {      // An array?
        read(s,    0       ,'[',fclz);
        read(s,s.length()-1,']',fclz);
        String[] splits = s.substring(1,s.length()-1).split(",");
        Class<E> afclz = (Class<E>)fclz.getComponentType();
        E[] a= (E[])Array.newInstance(afclz,splits.length);
        for( int i=0; i<splits.length; i++ )
          a[i] = (E)parse(splits[i],afclz);
        return a;
      }
      if( fclz.equals(Key.class) ) return Key.make(s);
  
      throw new RuntimeException("Unimplemented schema fill from "+fclz.getSimpleName());
    }  
    private int read( String s, int x, char c, Class fclz ) {
      if( peek(s,x,c) ) return x+1;
      throw new IllegalArgumentException("Expected '"+c+"' while reading a "+fclz.getSimpleName()+", but found "+s);
    }
    private boolean peek( String s, int x, char c ) { return x < s.length() && s.charAt(x) == c; }
  }