code: public static <R, C, V> ArrayTable<R, C, V> create(Table<R, C, V> table) {
      return (table instanceof ArrayTable<?, ?, ?>)
          ? new ArrayTable<R, C, V>((ArrayTable<R, C, V>) table)
          : new ArrayTable<R, C, V>(table);
    }
docs: Creates an {@code ArrayTable} with the mappings in the provided table.
  
  <p>If {@code table} includes a mapping with row key {@code r} and a separate mapping with
  column key {@code c}, the returned table contains a mapping with row key {@code r} and column
  key {@code c}. If that row key / column key pair in not in {@code table}, the pair maps to
  {@code null} in the generated table.
  
  <p>The returned table allows subsequent {@code put} calls with the row keys in {@code
  table.rowKeySet()} and the column keys in {@code table.columnKeySet()}. Calling {@link #put}
  with other keys leads to an {@code IllegalArgumentException}.
  
  <p>The ordering of {@code table.rowKeySet()} and {@code table.columnKeySet()} determines the
  row and column iteration ordering of the returned table.
  
  @throws NullPointerException if {@code table} has a null key