code: package com.lody.virtual.server.accounts;
  
  import android.accounts.Account;
  import android.os.Parcel;
  import android.os.Parcelable;
  
  import java.util.HashMap;
  import java.util.Map;
  
  /**
   * @author Lody
   */
  
  public class VAccount implements Parcelable {
      public static final Parcelable.Creator<VAccount> CREATOR = new Parcelable.Creator<VAccount>() {
          @Override
          public VAccount createFromParcel(Parcel source) {
              return new VAccount(source);
          }
  
          @Override
          public VAccount[] newArray(int size) {
              return new VAccount[size];
          }
      };
      public int userId;
      public String name;
      public String previousName;
      public String type;
      public String password;
      public long lastAuthenticatedTime;
      public Map<String, String> authTokens;
      public Map<String, String> userDatas;
  
  
      public VAccount(int userId, Account account) {
          this.userId = userId;
          name = account.name;
          type = account.type;
          authTokens = new HashMap<>();
          userDatas = new HashMap<>();
      }
  
      public VAccount(Parcel in) {
          userId = in.readInt();
          name = in.readString();
          previousName = in.readString();
          type = in.readString();
          password = in.readString();
          lastAuthenticatedTime = in.readLong();
          int authTokensSize = in.readInt();
          authTokens = new HashMap<>(authTokensSize);
          for (int i = 0; i < authTokensSize; i++) {
              String key = in.readString();
              String value = in.readString();
              authTokens.put(key, value);
          }
          int userDatasSize = in.readInt();
          userDatas = new HashMap<>(userDatasSize);
          for (int i = 0; i < userDatasSize; i++) {
              String key = in.readString();
              String value = in.readString();
              userDatas.put(key, value);
          }
      }
  
      @Override
      public int describeContents() {
          return 0;
      }
  
      @Override
      public void writeToParcel(Parcel dest, int flags) {
          dest.writeInt(userId);
          dest.writeString(name);
          dest.writeString(previousName);
          dest.writeString(type);
          dest.writeString(password);
          dest.writeLong(lastAuthenticatedTime);
          dest.writeInt(authTokens.size());
          for (Map.Entry<String, String> entry : authTokens.entrySet()) {
              dest.writeString(entry.getKey());
              dest.writeString(entry.getValue());
          }
          dest.writeInt(userDatas.size());
          for (Map.Entry<String, String> entry : userDatas.entrySet()) {
              dest.writeString(entry.getKey());
              dest.writeString(entry.getValue());
          }
      }
  }
  
  