code: public void process(ProjectFile file, Var2Data varData, byte[] fixedData) throws IOException
     {
        Props props = getProps(varData);
        //System.out.println(props);
        if (props != null)
        {
           String viewName = MPPUtility.removeAmpersands(props.getUnicodeString(VIEW_NAME));
           byte[] listData = props.getByteArray(VIEW_CONTENTS);
           List<Integer> uniqueIdList = new LinkedList<Integer>();
           if (listData != null)
           {
              for (int index = 0; index < listData.length; index += 4)
              {
                 Integer uniqueID = Integer.valueOf(MPPUtility.getInt(listData, index));
  
                 //
                 // Ensure that we have a valid task, and that if we have and
                 // ID of zero, this is the first task shown.
                 //
                 if (file.getTaskByUniqueID(uniqueID) != null && (uniqueID.intValue() != 0 || index == 0))
                 {
                    uniqueIdList.add(uniqueID);
                 }
              }
           }
  
           int filterID = MPPUtility.getShort(fixedData, 128);
  
           ViewState state = new ViewState(file, viewName, uniqueIdList, filterID);
           file.getViews().setViewState(state);
        }
     }
docs: Entry point for processing saved view state.
  
  @param file project file
  @param varData view state var data
  @param fixedData view state fixed data
  @throws IOException