code: public static String[] collect(String[] storage, int offset, String prefix, Object object, char separator, String... names) {
          if (storage == null) {
              storage = new String[names.length];
              offset = 0;
          }
          Class<?> type = object.getClass();
          for (int i = 0; i < names.length; ++i) {
              try {
                  storage[offset + i] = prefix + names[i] + separator + Beans.getKnownField(type, names[i]).get(object);
              } catch (Exception x) {
                  storage[offset + i] = prefix + names[i] + separator;
              }
          }
          return storage;
      }
docs: Collects object member values into an array of Strings, each prefixed by the field name.
  
  @param storage - an array of strings to store the return values
  @param offset - a offset into the storage from which to start storing return values
  @param prefix - a string to prepend to each member name in the output
  @param object - an object
  @param separator - a separator character between the member name and the member value in the output
  @param names - the names of data members of object
  @return an array of strings, each in the format of <i>&lt;prefix&gt;&lt;member-name&gt;&lt;separator&gt;&lt;member-value&gt;</i>